访问电脑版页面

导航:老古开发网手机版STM32单片机STM32单片机定时器

基于STM32定时器的三种中心对齐计数模式

导读:
关键字:
定时器,计数器,STM32,

STM32的通用定时器和高级定时器除了支持单向的向上或向下计数模式外,还支持中心对齐计数模式,即一个计数周期内分别由向上计数和向下计数两个过程组成。在基于计数器的中心对齐计数模式做定时器的比较输出功能时,又进一步衍生出三种中心对齐计数模式,分别是中心对齐计数模式1/2/3。具体通过寄存器TIMx_CR1里面的CMS[1:0]选择。

既然一次基于中心对齐计数模式的完整计数周期包含向上、向下两个计数过程,那么对给定的比较寄存器CCR的值在(0,ARR)范围时,一个周期内就会发生两次匹配事件,即出现CNT=CCR的两个时间点,对于这两次匹配事件最终是否完成比较事件标志的置位而触发中断或DMA,可以根据应用需求选择不同的中心对齐计数模式来决定。

在STM32各系列参考手册中关于定时器描述部分都有类似下面的一副图,是关于不同中心对齐计数模式下发生匹配事件后的比较事件标志的置位情况的直观展示。

这里CCR=4,ARR=8, 我们来一起看看。

当选择中心对齐计数模式1时,只在向下计数过程中发生匹配动作时才置位比较事件标志CC4IF; 当选择中心对齐计数模式2时,只在向上计数过程中发生匹配动作时才置位比较事件标志CC4IF; 当选择中心对齐计数模式3时,在向上/向下计数过程中发生匹配动作时都会置位比较事件标志CC4IF。当然,比较事件标志被置位时可以触发中断或DMA请求。

这里我们不妨使用STM32的TIM1的CH4做个验证性测试,看看在一个中心对齐计数周期内,通过选取不同的中心对齐模式下发生比较中断的次数。【这点不管哪个STM32系列都一样】

基于上面的配置及处理代码,我们只调整中心对齐计数模式,看看在一个中心对齐计数周期内比较中断的响应情况。【Counter表示进入比较中断的次数,DirecTIon表示发生比较中断时计数方向,0表示当前属向下计数过程,0xff表示向上计数过程】

测试结果在上图很清晰了,无须赘述。

那么,关于这个定时器特性有什么用呢,这个不好说,毕竟具体应用往往丰富多彩而千变万化。总之,书到用时方恨少嘛,了解各个外设的特性是我们灵活运用的基础和前提。比方在马达应用中,这个特性可能就用得着【具体怎么用还得看应用场景和所选芯片】。

如上图所示,计数器工作在中心对齐计数模式。我们有时可能需要在计数器上溢点的左侧或右侧启动ADC转换,这时就可以针对性选择合适的中心对齐模式在合适的时间点开启ADC转换。

当然,单就上面提到的这点应用,STM32家族中的很多系列开辟了更为灵活方便且高效的硬件措施,比方STM32F3、STM32G4、STM32F7、STM32H7等系列,通过配置高级定时器通道4/5/6的输出信号的上升/下降沿及不同组合实现对ADC的同步触发,最大程度地减少软件处理和CPU参与。

下图是来自STM32F3系列TIM1的触发输出信号配置图。TRGO2事件可以作为ADC的触发事件,可选择单个事件或组合事件。【配置工具使用的STM32CubeMx】

下面截图来自STM32F3系列参考手册定时器介绍章节,下图信息量很大,只是部分信息跟上面内容有关,贴到这里也算抛砖引玉。

这里重点旨在分享关于STM32定时器中心对齐计数三种模式的特征与彼此间的差异,知道这些特性后在需要的时候我们可以灵活运用。

来源:   作者:茶话mcu  2020/8/19 17:26:00
栏目: [ STM32单片机定时器]

相关阅读

STM32F407定时器TIM1中断

STM32单片机使用定时器中断方式实现毫秒级延时的设计

stm32定时器中断与误区

STM32单片机输出比较模式解析

STM32定时器配置定时时间总结

STM32定时器时间的计算方法

基于STM32定时器的三种中心对齐计数模式

STM32系列芯片定时器的主要功能及应用解析

STM32定时器基本计数原理解析

STM32之系统时钟基定时器

STM32定时器原理与使用

STM32F429的定时器的使用方法

STM32单片机通用定时器的编程设计

一个关于STM32定时器的CCR清零话题

STM32单片机定时器的时钟源设置

关于STM32F4定时器时钟频率问题

基于STM32定时器实现毫秒延时函数

STM32单片机通用定时器对lED灯的翻转控制设计

stm32 系统时钟设置

STM32 TIM1 输出脉冲范例