中心对齐模式(递增/递减计数)
在中心对齐模式下,计数器从 0 开始计数到自动重载值(TIMx_ARR 寄存器的内容)— 1,生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从 0 开始重新计数。
当 TIMx_CR1 寄存器中的 CMS 位不为“00”时,中心对齐模式有效。将通道配置为输出模式时,其输出比较中断标志将在以下模式下置 1,即:计数器递减计数(中心对齐模式 1,CMS =“01”)、计数器递增计数(中心对齐模式 2,CMS =“10”)以及计数器递增/递减计数(中心对齐模式 3,CMS =“11”)。
在此模式下,TIMx_CR1 寄存器的 DIR 方向位不可写入值,而是由硬件更新并指示当前计数器方向。
每次发生计数器上溢和下溢时都会生成更新事件,或将 TIMx_EGR 寄存器中的 UG 位置 1 (通过软件或使用从模式控制器)也可以生成更新事件。这种情况下,计数器以及预分频器计数器将重新从 0 开始计数。
通过软件将 TIMx_CR1 寄存器中的 UDIS 位置 1 可禁止 UEV 更新事件。这可避免向预装载寄存器写入新值时更新影子寄存器。在 UDIS 位写入 0 之前不会产生任何更新事件。不过,计数器仍会根据当前自动重载值进行递增和递减计数。
此外,如果 TIMx_CR1 寄存器中的 URS 位(更新请求选择)已置 1,则将 UG 位置 1 会生成 UEV 更新事件,但不会将 UIF 标志置 1(因此,不会发送任何中断或 DMA 请求)。这样一来,如果在发生捕获事件时将计数器清零,将不会同时产生更新中断和捕获中断。
发生更新事件时,将更新所有寄存器且将更新标志(TIMx_SR 寄存器中的 UIF 位)置 1(取决于 URS 位):
● 重复计数器中将重新装载 TIMx_RCR 寄存器的内容
● 预分频器的缓冲区中将重新装载预装载值(TIMx_PSC 寄存器的内容)
● 自动重载活动寄存器将以预装载值(TIMx_ARR 寄存器的内容)进行更新。注意,如果
更新操作是由计数器上溢触发的,则自动重载寄存器在重载计数器之前更新,因此,下一个计数周期就是我们所希望的新的周期长度(计数器被重载新的值)。
以下各图以一些示例说明不同时钟频率下计数器的行为。
---------------------------------------------------------------------------------------------