定时器输出比较&输入捕获
1.1 定时器的输出比较功能
1.1.1 什么意思?
所谓的输出比较就是计数器的值与比较寄存器的值进行比较,大于输出一种电平,小于输出另一种电平。
选择PWM1模式的时候,计数器的值小于设置的值输出有效电平(低电平有效),大于就是无效电平。
怎么让它们与灯关联上??输出比较通道的概念
PB0在原理图上连接的是LED3,在引脚映射上描述是可以作为定时器3的通道3,如果我使用定时器3的通道3作为PWM输出,LED3就会接收到PWM输出的波形。
LED3会显示成什么样子??PWM是有效电平和无效电平的一个占比,灯是低电平有效,高电平无效,如果有效电平时间长灯亮度高,有效时间短灯暗。
配置示例:
如果我们改变占空比(PWM)就可以实现灯慢慢亮,慢慢灭,怎么调节??改变比较寄存器里面的值。
我们这里选择使用每次更新后改变比较寄存器的值。
总结:
1)什么是PWM?有效电平和无效电平的占空比
2)什么是输出比较?大于(比较寄存器)的极性是什么,小于极性又是什么
3)实现PWM输出配置有哪些?定时器配置好,PWM模式选择、极性选择、通道选择、比较寄存器的值,通道对应引脚映射。
1.2 定时器的输入捕获功能
1.2.1 什么是输入捕获?
字面意思捕获输入的信号,怎么捕获?为什么要捕获??检测通道上的高低电平变化,可以及时快速的获取到通道上的状态。
找一个现象学习这种功能,我们这里使用按键去测试,按键按下被捕获,松手又会捕获,计算两次之间的时间,得到按下的时长。
1.2.2 配置输入捕获
在库函数中可以看到如下函数。
这个函数需要的配置参数如下:从上到下分别是通道选择、捕获边沿设置、寄存器映射、分频设置、滤波等级设置。
我们根据之前的了解,将它们进行如下设置即可使用了(定时器3的配置不变,加上下面代码再启动就可以了)。
设置完成之后,我们进行测试,这里先测试是否能够捕获到上升沿和下降沿。
测试是完全没问题的,按键按下可以检测到,松手也能检测到(按下输出一次,松手又是一次)。
但是,这样检测不及时,最好还是开中断去做,所以我们把定时器3的中断打开。
然后在中断中放置同样的代码进行测试,发现也是没有问题的,可以正常检测。
1.2.3 按下到松手的时长计算