本章参考资料:《 STM32F4xx 参考手册》、《 STM32F4xx 规格书》、库帮助文档
《 stm32f4xx_dsp_stdperiph_lib_um.chm》。
学习本章时,配合《 STM32F4xx 参考手册》高级定时器章节一起阅读,效果会更佳,
特别是涉及到寄存器说明的部分。
特别说明,本书内容是以 STM32F42x 系列控制器资源讲解。
上一章我们讲解了基本定时器功能,基本定时器功能简单,理解起来也容易。高级控
制定时器包含了通用定时器的功能,再加上已经有了基本定时器基础的基础,如果再把通
用定时器单独拿出来讲那内容有很多重复,实际效果不是很好,所以通用定时器不作为独
立章节讲解,可以在理解了高级定时器后参考《 STM32F4xx 中文参考手册》通用定时器章
节内容理解即可。
高级控制定时器(TIM1 和 TIM8)和通用定时器在基本定时器的基础上引入了外部引脚,
有输入捕获和输出比较功能。高级控制定时器比通用定时器增加了可编程死区互补输出、
重复计数器、带刹车(断路)功能,这些功能都是针对工业电机控制方面。
高级控制定时器时基单元包含一个 16 位自动重载计数器 ARR,一个 16 位的计数器
CNT,可向上/下计数,一个 16 位可编程预分频器 PSC,预分频器时钟源有多种可选,有
内部的时钟、外部时钟。还有一个 8 位的重复计数器 RCR,这样最高可实现 40 位的可编程定时。
高级定时器功能简介
1-计数器16bit,上/下/两边 计数,TIM1和TIM8,还有一个重复计数器RCR,独有。
2-有4个GPIO,其中通道1~3还有互补输出GPIO
3-时钟来自PCLK2,可实现1~65536分频
这个问题在基本定时器已经解释过了,这里不再赘述。
具体步骤解释可以参见零死角书籍。
测量脉宽或者频率
测量频率
当捕获通道 TIx 上出现上升沿时,发生第一次捕获,计数器 CNT 的值会被锁存到捕获
寄存器 CCR 中,而且还会进入捕获中断,在中断服务程序中记录一次捕获(可以用一个标
志变量来记录),并把捕获寄存器中的值读取到 value1 中。当出现第二次上升沿时,发生
第二次捕获,计数器 CNT 的值会再次被锁存到捕获寄存器 CCR 中,并再次进入捕获中断,
在捕获中断中,把捕获寄存器的值读取到 value3 中,并清除捕获记录标志。利用 value3 和
value1 的差值我们就可以算出信号的周期(频率)。
测量脉宽
当捕获通道 TIx 上出现上升沿时,发生第一次捕获,计数器 CNT 的值会被锁存到捕获
寄存器 CCR 中,而且还会进入捕获中断,在中断服务程序中记录一次捕获(可以用一个标
志变量来记录),并把捕获寄存器中的值读取到 value1 中。然后把捕获边沿改变为下降沿
捕获,目的是捕获后面的下降沿。当下降沿到来的时候,发生第二次捕获,计数器 CNT 的
值会再次被锁存到捕获寄存器 CCR 中,并再次进入捕获中断,在捕获中断中,把捕获寄存
器的值读取到 value3 中,并清除捕获记录标志。然后把捕获边沿设置为上升沿捕获。
在测量脉宽过程中需要来回的切换捕获边沿的极性,如果测量的脉宽时间比较长,定时器就会发生溢出,溢出的时候会产生更新中断,我们可以在中断里面对溢出进行记录处理。
PWM 输入模式
测量脉宽和频率还有一个更简便的方法就是使用 PWM 输入模式。与上面那种只使用
一个捕获寄存器测量脉宽和频率的方法相比, PWM 输入模式需要占用两个捕获寄存器。
当使用 PWM 输入模式的时候,因为一个输入通道(TIx)会占用两个捕获通道(ICx),所
以一个定时器在使用 PWM 输入的时候最多只能使用两个输入通道(TIx)。
PWM 输出模式
PWM 输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄
存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。
关于这一节,有很多的地方没有详细列出重点,这里太傅哦关乎到寄存器的东西,而研究一个芯片的寄存器很费时间,如果以后项目需要,回看手册。