TIM定时器(输入捕获)

一,TIM输入捕获简介

IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模式,同时测量频率和占空比 可配合主从触发模式,实现硬件全自动测量

二,频率测量方式

频率大的适合用测频法,频率稍小的适合用测周法(使得结果更加精确)

此处用到的为测周法

TIM定时器(输入捕获)_第1张图片

三,使用IC捕获需要配置的基本结构 (测频率)

TIM定时器(输入捕获)_第2张图片 每次出现边沿检测都会进行“捕获”——将计数器CNT的值赋给CCR,然后从模式对CNT进行清零,由此可见,每次直接读出来的CCR值即为一个周期!(为公式中的N)(此处为配置上升沿触发)

四,配置PWMI模式基本结构

TIM定时器(输入捕获)_第3张图片 使用交叉连接,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定时器(输入捕获)_第4张图片

 同时检测频率和占空比需要两条通道并且同一输入源(交叉连接)

注意:捕获模式四个通道公用一个函数

TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);

TIM定时器(输入捕获)_第5张图片此处配置另一条通道也可以使用函数

TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);

例子:

//  TIM_PWMIConfig(TIM3,&TIM_ICInitStructure);             //配置与通道一相反性质的通道

即为配置了一条交叉连接的通道二

详细初始化函数如下:

TIM定时器(输入捕获)_第6张图片

你可能感兴趣的:(STM32单片机标准库,stm32,c语言,嵌入式硬件,单片机)