定时器的从模式
STM32定时器的从模式(Slave Mode)允许定时器响应外部或内部触发信号,实现同步、计数控制等功能。三种常用模式:复位模式、门控模式、触发模式。
1. 复位模式 (Reset Mode)
行为
- 触发信号的有效沿到来时,立即将计数器 CNT 复位为 0。
- 同时产生一个更新事件(UIF 和 TIF 均置位)。
- 计数器继续计数,直到下一个触发信号再次复位。
典型用途
- 测量脉冲周期/频率:用上升沿复位,同时记录 CNT 值。
- 产生与外部信号同步的定时波形。
示例
配置 TIM2 为复位模式,触发源为 TI1 上升沿:
c
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_RESET;
sSlaveConfig.InputTrigger = TIM_TS_TI1FP1;
2. 门控模式 (Gated Mode)
行为
- 触发信号的电平(高或低)控制计数器的启停。
- 电平有效时,计数器按预分频器正常计数;无效时,计数器停止。
- 不产生额外的更新事件,也不复位计数器。
典型用途
- 测量脉冲宽度:高电平期间计数,低电平停止。
- 实现外部时钟门控。
示例
配置 TIM2 为门控模式,触发源为 TI1 高电平有效:
c
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_GATED;
sSlaveConfig.InputTrigger = TIM_TS_TI1FP1;
// 极性需通过输入捕获配置
3. 触发模式 (Trigger Mode)
行为
- 触发信号的有效沿到来时,启动计数器(从当前 CNT 值开始计数)。
- 之后计数器持续运行,直到软件停止或发生溢出。
- 不复位计数器,也不产生额外的更新事件。
典型用途
- 外部信号同步启动 ADC 转换。
- 实现单次或多次定时序列的同步启动。
示例
配置 TIM2 为触发模式,触发源为 ITR0(来自其他定时器):
c
sSlaveConfig.SlaveMode = TIM_SLAVEMODE_TRIGGER;
sSlaveConfig.InputTrigger = TIM_TS_ITR0;
对比总结
| 模式 | 触发沿作用 | 对计数器影响 | 产生更新事件 | 典型应用 |
|---|---|---|---|---|
| 复位模式 | 复位 CNT 为 0 | 立即清零 | 是(UIF+TIF) | 周期测量、信号同步 |
| 门控模式 | 控制计数启停 | 保持或停止 | 否 | 脉宽测量 |
| 触发模式 | 启动计数 | 从当前值开始 | 否 | 同步启动定时 |
与中断区分的关联
- 复位模式:在更新中断回调中检查
TIF可区分是复位触发还是自动重装载溢出。 - 门控模式:不会产生更新事件,因此不会进入
HAL_TIM_PeriodElapsedCallback。 - 触发模式:仅启动计数,不产生更新事件,也不会进入更新中断(除非溢出)。

- 复位模式下 触发信号会使定时器重新开始计数并且还会触发定时器更新中断
- 门模式下 高电平时定时器计数 低电平时定时器暂停
- 触发模式下 触发信号可以使定时器开始计数,但不能停止计数,可以配合单脉冲模式使用

浙公网安备 33010602011771号