一,TIM输入捕获简介
IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模式,同时测量频率和占空比 可配合主从触发模式,实现硬件全自动测量
二,频率测量方式
频率大的适合用测频法,频率稍小的适合用测周法(使得结果更加精确)
此处用到的为测周法
三,使用IC捕获需要配置的基本结构 (测频率)
每次出现边沿检测都会进行“捕获”——将计数器CNT的值赋给CCR,然后从模式对CNT进行清零,由此可见,每次直接读出来的CCR值即为一个周期!(为公式中的N)(此处为配置上升沿触发)
四,配置PWMI模式基本结构
使用交叉连接,PWMI模式中配置下降沿触发,每出现一次下降沿,将CNT锁存到CCR2中,但此处不进行CNT清零!即CCR2的值即为高电平的时间,这样就可以计算出占空比。
从模式配置以及触发源的选择
从模式配置以及触发源选择有关函数:
TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);
TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);
选择触发源为TIM_TS_TI1FP1,检测到上升沿立刻执行从模式
从模式选择Reset,进行CNT清零
例子:
TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1); //触发源选择
TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset); //配置从模式
同时检测频率和占空比需要两条通道并且同一输入源(交叉连接)
注意:捕获模式四个通道公用一个函数
TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
此处配置另一条通道也可以使用函数
TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);
例子:
// TIM_PWMIConfig(TIM3,&TIM_ICInitStructure); //配置与通道一相反性质的通道
即为配置了一条交叉连接的通道二
详细初始化函数如下: