今天小编要和大家分享的是控制,MCU相关信息,接下来我将从基于STM32定时器的三种中心对齐计数模式,手执简易计数器oxd3145500k这几个方面来介绍。
控制,MCU相关技术文章基于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表示向上计数过程】