STM32F407输入捕获-拨开云雾见青天

之前只用过51单片机,编程的时候全是设定寄存器,现在接触STM32发现寄存器太多了,头大了三天。。。
之前一直对着103的资料设定407的定时器,但是这哥俩区别真是有的,一开始就进错了门,还想找对人?407输入捕获要把GPIO设定成复用模式,还要做管脚复用的映射,
`GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_TIM5);  `
进入`GPIO_PinAFConfig` 看看注释后才豁然开朗,原来要这么设置AF。

@brief Changes the mapping of the specified pin.

@param GPIOx: where x can be (A..I) to select the GPIO peripheral.

@param GPIO_PinSource: specifies the pin for the Alternate function.

This parameter can be GPIO_PinSourcex where x can be (0..15).

@param GPIO_AFSelection: selects the pin to used as Alternate function.

This parameter can be one of the following values:

@arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset)

@arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0 (default after reset)

@arg GPIO_AF_TAMPER: Connect TAMPER pins (TAMPER_1 and TAMPER_2) to AF0 (default after reset)

@arg GPIO_AF_SWJ: Connect SWJ pins (SWD and JTAG)to AF0 (default after reset)

@arg GPIO_AF_TRACE: Connect TRACE pins to AF0 (default after reset)

@arg GPIO_AF_TIM1: Connect TIM1 pins to AF1

@arg GPIO_AF_TIM2: Connect TIM2 pins to AF1

@arg GPIO_AF_TIM3: Connect TIM3 pins to AF2

@arg GPIO_AF_TIM4: Connect TIM4 pins to AF2

@arg GPIO_AF_TIM5: Connect TIM5 pins to AF2

顺便记下捕获输入的配置项:

===============================================================================
                      Input Capture management functions
 ===============================================================================  

       ===================================================================
              TIM Driver: how to use it in Input Capture Mode
       ===================================================================
       To use the Timer in Input Capture mode, the following steps are mandatory:

       1. Enable TIM clock using RCC_APBxPeriphClockCmd(RCC_APBxPeriph_TIMx, ENABLE) function

       2. Configure the TIM pins by configuring the corresponding GPIO pins
       就是这一步除了错,IO口没配置正确,应该=加复用映射。

       2. Configure the Time base unit as described in the first part of this driver,
          if needed, else the Timer will run with the default configuration:
          - Autoreload value = 0xFFFF
          - Prescaler value = 0x0000
          - Counter mode = Up counting
          - Clock Division = TIM_CKD_DIV1

       3. Fill the TIM_ICInitStruct with the desired parameters including:
          - TIM Channel: TIM_Channel
          - TIM Input Capture polarity: TIM_ICPolarity
          - TIM Input Capture selection: TIM_ICSelection
          - TIM Input Capture Prescaler: TIM_ICPrescaler
          - TIM Input CApture filter value: TIM_ICFilter

       4. Call TIM_ICInit(TIMx, &TIM_ICInitStruct) to configure the desired channel with the
          corresponding configuration and to measure only frequency or duty cycle of the input signal,
          or,
          Call TIM_PWMIConfig(TIMx, &TIM_ICInitStruct) to configure the desired channels with the
          corresponding configuration and to measure the frequency and the duty cycle of the input signal

       5. Enable the NVIC or the DMA to read the measured frequency. 

       6. Enable the corresponding interrupt (or DMA request) to read the Captured value,
          using the function TIM_ITConfig(TIMx, TIM_IT_CCx) (or TIM_DMA_Cmd(TIMx, TIM_DMA_CCx)) 

       7. Call the TIM_Cmd(ENABLE) function to enable the TIM counter.

       8. Use TIM_GetCapturex(TIMx); to read the captured value.

       Note1: All other functions can be used separately to modify, if needed,
              a specific feature of the Timer. 
时间: 2024-10-09 15:35:26

STM32F407输入捕获-拨开云雾见青天的相关文章

输入捕获

#include "timer.h"#include "led.h"#include "usart.h" //TIM14 PWM部分初始化 //PWM输出初始化//arr:自动重装值//psc:时钟预分频数void TIM14_PWM_Init(u32 arr,u32 psc){ //此部分需手动修改IO口设置 GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_Tim

STM32F0xx_TIM输入捕获(计算频率)配置详细过程

前言 关于STM32的定时器,可谓是功能强大,估计没有多少人研究完STM32定时器的所有功能(包括我也没有),只是使用常用的一些功能,后续我会推出关于STM32定时器的更多功能. STM32芯片多数为16位计数,但基本上都有1个或两个32位的定时器,可惜的是我们最常使用的F1系列芯片中没有32位的定时器,F030中也没有,具体请看数据手册. 今天主要总结关于STM32F0系列输入捕获,捕获信号频率,即所谓逻辑分析仪检测数字频率的功能. 今天使用32位的TIM2作为捕获的定时器,为什么是32位,原

STM32之输入捕获以及小小应用(库)

五一之际,先祝大家五一快乐.其实快乐很简单,工作的人有假放,学习的人也有假放,像我,有假放才有更多的时间学自己想学的东西.51假期学51,可惜没有32假期呀.好了..言归正传,大家听过吸星大法吧..在这里.智商和情商比我高的人估计又知道我要说什么了..没错了..今天我们来了解"葵花宝典"第STM32篇之输入捕获,也就是上文所讲的"吸星大法", 那输入捕获可以用来干嘛呢??这个问题问的好,输入捕获可以用来测量脉冲宽度或者测量频率,假如要捕获一个脉冲的高电平脉宽,我们要

STM32F103 输入捕获

最近这几周各种考试,各种课程设计,唉,我得复习复习了,所以啦,博客暂停直到6-25之后继续更新,欢迎阅读. STM32F103 输入捕获信号: /*--------------------------------------------------------------------------- * Project: Time.h * Name: zwp * Date: 2014/6 *------------------------------------------------------

STM32学习笔记11(通用定时器作为输入捕获2)

通用定时器作为输入捕获的使用.我们将用 TIM5 的通道 1 (PA0)来做输入捕获,捕获 PA0 上高电平的脉宽(用 WK_UP 按键输入高电平),通过串口打印高电平脉宽时间 输入捕获简介 输入捕获模式可以用来测量脉冲宽度或者测量频率. STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能.STM32 的输入捕获,简单的说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的

STM32使用定时器实现输入捕获

输入捕获简介输入捕获模式可以用来测量脉冲宽度或者测量频率.STM32的定时器,除了TIM6和TIM7,其他定时器都有输入捕获功能. STM32的输入捕获,简单地说就是通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将此刻定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)里面,完成一次捕获. 使用TIM2输入捕获的配置步骤:1.开启TIM2时钟,配置PA0为下拉输入.需要使用到PA0作为TIM2_CH1上面的脉冲输入.2.设

输入捕获,输出比较

明确一点对比AD的构造,stm32有3个AD,每个AD有很多通道,使用哪个通道就配置成哪个通道,这里定时器也如此,有很多定时器TIMx,每个定时器有很多CHx(通道),可以配置为输入捕捉-------测量频率用,也可以配置为输出比较--------输出PWM使用 输入捕捉:可以用来捕获外部事件,并为其赋予时间标记以说明此事件的发生时刻. 外部事件发生的触发信号由单片机中对应的引脚输入(具体可以参考单片机的datasheet),也可以通过模拟比较器单元来实现. 时间标记可用来计算频率,占空比及信号

stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)

STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启TIM2时钟,配置PA0输入 APB1外设复位寄存器 (RCC_APB1RSTR) APB2外设时钟使能寄存器(RCC_APB2ENR) 置1开启.清0关闭. Eg:RCC->APB1ENR|=1<<0; //使能TIM2时钟  RCC->APB2ENR|=1<<2;  

STM32学习笔记3(TIM输入捕获)

PWM 输入捕获模式< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> 一.概念理解 PWM输入捕获模式时输入捕获模式的特例 1.每个定时器有四个输入通道IC1.IC2.IC3.IC4,且IC1 IC2一组,IC3 IC4一组,并可是设置管脚和寄存器的对应关系 2.两个TI输出映射了两个ICx信号 3.这两个ICx信号分别在相反的极性边沿有效 4.两个边沿