STM32的通用定时器和高级定时器除了支持单向的向上或向下计数模式外,还支持中心对齐计数模式,即一个计数周期内分别由向上计数和向下计数两个过程组成。在基于计数器的中心对齐计数模式做定时器的比较输出功能时,又进一步衍生出三种中心对齐计数模式,分别是中心对齐计数模式1/2/3。具体通过寄存器TIMx_CR1里面的CMS[1:0]选择。
既然一次基于中心对齐计数模式的完整计数周期包含向上、向下两个计数过程,那么对给定的比较寄存器CCR的值在(0,ARR)范围时,一个周期内就会发生两次匹配事件,即出现CNT=CCR的两个时间点,对于这两次匹配事件最终是否完成比较事件标志的置位而触发中断或DMA,可以根据应用需求选择不同的中心对齐计数模式来决定。
在STM32各系列参考手册中关于定时器描述部分都有类似下面的一副图,是关于不同中心对齐计数模式下发生匹配事件后的比较事件标志的置位情况的直观展示。
这里CCR=4,ARR=8, 我们来一起看看。
当选择中心对齐计数模式1时,只在向下计数过程中发生匹配动作时才置位比较事件标志CC4IF;