ZHCUAN6E October 2022 – May 2025 MSPM0L1105 , MSPM0L1106 , MSPM0L1116 , MSPM0L1117 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1
在仅 TIMA 中,重复计数器 (RC) 是一个 8 位计数器,它提供抑制不必要事件和生成真实事件的机制,以生成中断。具体来说,如果计时器正在生成针对已知周期数重复发生的事件(例如周期性 PWM 输出波形),则重复计数器可以抑制加载事件、比较事件和归零事件。这可防止在每个计时器周期内产生过多和不必要的中断。
当计时器计数器 (TIMA.CTR) 前进时,一旦计数器重新加载 (TIMA.CTR = 0),重复计数器 (TIMA.RC) 就会前进。软件可以通过设置 TIMA.RCLD 寄存器,设置在生成中断和事件之前重新加载计时器计数器的次数。当 TIMA.RC = TIMA.RCLD 时,重复计数器复位回零,并且在中断和事件状态寄存器中发生重复计数器归零事件 (REPC)。
此外,当 TIMA.RC 不等于零时,重复计数器提供抑制归零事件、加载事件和比较事件生成的功能。
表 24-2 显示了相对于计时器计数器和重复计数器负载值的重复计数器行为。
| TIMA.CTR 前进 (+1) | 计数器值 | TIMA.RC = TIMA.RCLD | 重复计数器行为 | 抑制负载和归零事件 (SLZERCNEZ = 1) | 抑制比较事件 (SCERCNEZ = 1) |
|---|---|---|---|---|---|
| 否 | - | - | 不前进 | 是 | 是 |
| 是 | TIMA.CTR ≠ 0 | - | 不前进 | 是 | 是 |
| 是 | TIMA.CTR = 0 | 否 | 前进 (+1) | 是 | 是 |
| 是 | TIMA.CTR = 0 | 是 | TIMA.RC = 0 | 否 | 否 |
重复计数器示例
如图 24-3 所示,TIMA.CTR 配置为向下计数模式,一旦 TIMA.CTR = 0,就会生成归零事件。要抑制中断生成,直至发生 4 次计时器重新加载,请设置 TIMA.RCLD = 4 和 TIMA.CTRCTL.SLZERCNEZ = 1,以抑制归零事件和加载事件,直到 RC = 0(一旦 TIMA.RC = TIMA.RCLD,就会发生)。