hal库timer
TRGO / TRGI / ITR 三者关系
- TRGO:一个定时器只有 1 个(触发输出)
由 CR2.MMS 选择输出哪种事件(更新 / 比较 / 触发等)
输出后进入芯片的 内部触发网络(ITR 总线) - TRGI:一个定时器只有 1 个(触发输入)
由 SMCR.TS[3:0] 选择从哪条路接收信号
同一时间只能选 1 个来源 作为 TRGI - ITR (Internal Trigger):内部触发通道(共 4 条:ITR0~ITR3)
是芯片硬件固定的 “触发信号布线”
把所有定时器的 TRGO 都连到这个总线上
每个定时器的 TRGI 可以选其中任意一条 ITR
性质:
- 一对多(1 个 TRGO → 多个 TRGI)
- TIM2_TRGO 连到 ITR0 总线
- TIM3、TIM4、TIM5、ADC 都可以选 ITR0 当 TRGI
→ 同一个 TRGO 能同时触发 N 个从定时器 / ADC
(硬件广播,不用额外配置)
- 多对一(多个 TRGO → 1 个 TRGI)
- TIM3 的 TRGI 可以选:
TS=000 → ITR0(TIM2_TRGO)
TS=001 → ITR1(TIM1_TRGO)
TS=010 → ITR2(TIM4_TRGO)
TS=011 → ITR3(TIM5_TRGO)
还可选外部引脚、ETR、TI1 等
→ 同一时间只能选 1 个,但来源很多
主模式
功能:内部事件映射成 TRGO 信号
由TIMx_CR2 里 MMS[2:0] 3 位控制
| MMS 值 | 宏定义 | 含义 | 什么时候输出 TRGO |
|---|---|---|---|
| 000 | TIM_TRGO_RESET | 复位模式 | 计数器复位时 (CNT 清零) 输出 TRGO |
| 001 | TIM_TRGO_ENABLE | 使能模式 | 定时器 CEN 置 1、开始计数时输出 TRGO |
| 010 | TIM_TRGO_UPDATE | 更新事件模式 | 溢出 / 下溢、更新事件发生时输出 TRGO(最常用) |
| 011 | TIM_TRGO_OC1 | 比较匹配 OC1 | CH1 捕获比较匹配时输出 TRGO |
| 100 | TIM_TRGO_OC1REF | OC1 参考信号 | CH1 内部参考波形 OC1REF 边沿输出 TRGO |
| 101 | TIM_TRGO_OC2REF | OC2 参考信号 | CH2 OC1REF 边沿输出 TRGO |
| 110 | TIM_TRGO_OC3REF | OC3 参考信号 | CH3 OC1REF 边沿输出 TRGO |
| 111 | TIM_TRGO_OC4REF | OC4 参考信号 | CH4 OC1REF 边沿输出 TRGO |
注意:只有高级定时器 / 通用定时器才有完整 8 种,基本定时器只有部分。
从模式
特性:
- 同一时刻只能选一种从模式,不能多个叠加;
- 从模式要配合 TRGI 触发源(ITR 内部级联、TI1/TI2 引脚、ETR 外部引脚)才生效;
- 基本定时器 没有从模式,只有通用 / 高级定时器支持全套从模式;
- 主模式是往外发 TRGO,从模式是收 TRGI 做动作。
SMS [3:0] 真值表(全部从模式)
功能:用外部触发信号 TRGI(内部其他定时器 TRGO、引脚边沿 / 电平),硬件自动控制定时器行为,不用 CPU 干预。
| SMS[3:0] | 模式名称 | 英文 | 核心作用 |
|---|---|---|---|
| 0000 | 从模式关闭 | Disable | 关闭从模式,定时器自由运行 |
| 0001 | 编码器模式 1 | Encoder TI1/TI2 | 上升 / 下降沿都计数,仅 TI1 滤波 |
| 0010 | 编码器模式 2 | Encoder TI2/TI1 | 上升 / 下降沿都计数,仅 TI2 滤波 |
| 0011 | 编码器模式 3 | Encoder TI1+TI2 | TI1、TI2 双边都做相位解码 |
| 0100 | 复位从模式 | Reset Mode | TRGI 有效沿 → 立刻清零 CNT、重载 ARR |
| 0101 | 门控从模式 | Gated Mode | TRGI 高电平 → 允许计数;低电平 → 停止计数 |
| 0110 | 触发从模式 | Trigger Mode | TRGI 有效沿 → 启动定时器计数 |
| 0111 | 组合复位 + 触发 | Reset + Trigger | 触发沿复位 CNT,下一个触发沿再启动 |
| 1000 | 重触发从模式 | Retrigger Mode | 每次 TRGI 有效沿 都重新重载周期 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 shaplus's blog!
评论
