目录
一、输入捕获简介
输入捕获模式可以用来测量脉冲宽度或者测量频率。我们以测量脉宽为例,用一个简图来
说明输入捕获的原理,如图
所示:
如图
所示,就是输入捕获测量高电平脉宽的原理,假定定时器工作在向上计数模式, 图中 t1~t2
时间,就是我们需要测量的高电平时间。测量方法如下:首先设置定时器通道
x
为 上升沿捕获,这样,t1
时刻,就会捕获到当前的
CNT
值,然后立即清零
CNT
,并设置通道
x 为下降沿捕获,这样到 t2
时刻,又会发生捕获事件,得到此时的
CNT
值,记为
CCRx2
。这样, 根据定时器的计数频率,我们就可以算出 t1~t2
的时间,从而得到高电平脉宽。
在
t1~t2
之间,可能产生
N
次定时器溢出,这就要求我们对定时器溢出,做处理,防止高
电平太长,导致数据不准确。如图
14.1.1
所示,
t1~t2
之间,
CNT
计数的次数等于:
N*ARR+CCRx2
,
有了这个计数次数,再乘以
CNT
的计数周期,即可得到
t2-t1
的时间长度,即高电平持续时间。
输入捕获的原理。
STM32
的定时器,除了
TIM6
和
TIM7
,其他定时器都有输入捕获功能。
STM32
的输入捕
获,简单的说就是通过检测
TIMx_CHx
上的边沿信号,在边沿信号发生跳变(比如上升沿
/
下降
沿)的时候,将当前定时器的值(
TIMx_CNT
)存放到对应的通道的捕获
/
比较寄存器(
TIMx_CCRx
) 里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA
等。
我们用到
TIM2_CH1