1、定时器分类
1.1、高级控制定时器(TIM1,TIM8)
- 特点:支持 PWM 互补输出、死区插入、刹车功能、编码器接口等,适用于电机控制。
- 典型场景:三相无刷电机驱动(带死区保护)。
1.2、通用控制定时器(TIM2-TIM5,TIM9-TIM14)
- 特点:支持输入捕获、输出比较、PWM生成、编码器接口。
- 典型场景:LED 亮度调节(PWM 输出)。
1.3、基本定时器(TIM6,TIM7)
- 特点:仅支持定时中断和 DAC 触发,无外部 IO 功能。
- 典型场景:周期性系统心跳(如 1ms 定时中断)。
2、高级控制定时器
2.1、简介
包含一个 16 位自动重载计数器,该计数器由可编程预分频器驱动。使用定时器预分频器和 RCC 时钟控制器预分频器,可将脉冲宽度和波形周期从几微秒调制到几毫秒。高级控制定时器(TIM1 和 TIM8)和通用 (TIMx) 定时器彼此完全独立,不共享任何资源。
高级控制定时器部分框图:
2.2、时基单元
可编程高级控制定时器的主要模块是一个 16 位计数器及其相关的自动重载寄存器。计数器可递增计数、递减计数或交替进行递增和递减计数。计数器的时钟可通过预分频器进行分频。计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行读写操作。
时基单元包括:
- 计数器寄存器 (TIMx_CNT)
- 预分频器寄存器 (TIMx_PSC)
- 自动重载寄存器 (TIMx_ARR)
- 重复计数器寄存器 (TIMx_RCR)
2.3、计数器模式
2.3.1、 递增计数模式
在递增计数模式下,计数器从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。
如果使用重复计数器,则当递增计数的重复次数达到重复计数器寄存器中编程的次数加一次(TIMx_RCR+1) 后,将生成更新事件 (UEV)。否则,将在每次计数器上溢时产生更新事件。将 TIMx_EGR 寄存器的 UG 位置 1(通过软件或使用从模式控制器)时,也将产生更新事件。
下图是计数器时序图:
2.3.2、递减计数模式
在递减计数模式下,计数器从自动重载值( TIMx_ARR 寄存器的内容)开始递减计数到 0,然后重新从自动重载值开始计数并生成计数器下溢事件。
如果使用重复计数器,则当递减计数的重复次数达到重复计数器寄存器中编程的次数加一次(TIMx_RCR+1) 后,将生成更新事件 (UEV)。否则,将在每次计数器下溢时产生更新事件。将 TIMx_EGR 寄存器的 UG 位置 1(通过软件或使用从模式控制器)时,也将产生更新事件。
下面是计数器时序图:
2.3.3、中心对齐模式(递增/递减计数)
在中心对齐模式下,计数器从 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 开始计数。
下图是计数器时序图: