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. 一对多(1 个 TRGO → 多个 TRGI)
  • TIM2_TRGO 连到 ITR0 总线
  • TIM3、TIM4、TIM5、ADC 都可以选 ITR0 当 TRGI
    → 同一个 TRGO 能同时触发 N 个从定时器 / ADC
    (硬件广播,不用额外配置)
  1. 多对一(多个 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 有效沿 都重新重载周期