学习目标:
了解输入捕获
学习内容:
上面是输入捕获的原理图
假定定时器工作在向上计数模式,t1到t2就是我们测量高电平时间。方法如下
首先设置定时器通道x为上升沿捕获,这样t1时就会捕获到当前的CNT值,然后清零CNT并设置通道x为下降沿捕获,这样到t2时刻又会发生捕获事件,得到当前的CNT值计为CCRx2
这样根据定时器的计数频率我们就可以算出t1~t2的时间,从而得到高电平脉宽
当然在t1~t2之间可能产生N次定时器溢出这样就需要我们对溢出做出处理,防止高电平过长
导致数据不稳定。CNT计数的次数等于:N*ARR+CCRx2,有了这个计数次数,再乘以CNT的计数周期,即可得到t2-t1的时间长度,即高电平持续时间。
这就是输入捕获的原理
下面是代码部分
void TIM2_cap_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStruct