在前面文章《STM32-定时器系统原理》已经详细介绍了定时器的系统最基本的计数单元,这边文章来写定时器系统的两个主要应用单元——捕获/比较通道。
目录
捕获和比较
捕获
什么是捕获
所谓捕获就是通过检测捕获通道上的边沿信号。在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCR)里面,完成一次捕获。
捕获的应用
STM32支持一下捕获模式:
- 输入捕获模式
- PWM输入模式
输入捕获模式可以用来测量脉冲宽度或者测量频率。下图是输入捕获测量高电平脉宽的原理,假定定时器工作在向上计数模式,图中 t1~t2 时间,就是需要测量的高电平时间。
测量方法如下:首先设置定时器通道 x 为上升沿捕获,这样,t1 时刻,就会捕获到当前的 CNT 值,然后立即清零 CNT,并设置通道 x为下降沿捕获,这样到 t2 时刻,又会发生捕获事件,得到此时的 CNT 值,记为 CCRx2。这样,根据定时器的计数频率,我们就可以算出 t1~t2 的时间,从而得到高电平脉宽。
比较
什么是比较
所谓比较就是计数器的值和与装载的值进行比较。
比较的应用
STM32支持一下比较模式:
- 强置输出模式
- 输出比较模式
- PWM模式
- 单脉冲模式
最近本的应用就是PWM模式了!
上图是输出PWM的原理,假定定时器工作在向上计数 PWM模式,且当 CNT<CCRx 时,输出 0,当 CNT>=CCRx 时输出 1。当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。改变 CCRx 的值,就可以改变 PWM 输出的占空比,改变 ARR 的值,就可以改变 PWM 输出的频率。
捕获/比较通道概述
捕获/比较通道与定时器密切相关,密不可分,水乳交融,使用不同的功能要使用到不同的寄存器,这里只列举与输入捕获、PWM相关的寄存器。如果使用到其他功能,详细的相关的寄存器在《STM32中/英文参考手册》的14.4章节。通用定时器框图如下所示,红色框是计数器部分,在计数器的基础上,还有下方的4个独立的捕获/比较通道,主要用于
- 输入捕获
- 输出比较
- PWM生成(边缘或中间对齐模式)
- 单脉冲模式输出
每一个捕获/比较通道都是围绕着一个捕获/比较寄存器,包括捕获的输入部分(数字滤波、多路复用和预分频器),和