1. CPU Timer 是什么C2000 的 CPU Timer 本质是32 位倒计数器从设定值开始减减到 0 后产生中断然后重新装载继续下一轮。2. 工作流程CPU Timer 流程图核心流程SYSCLKOUT ↓ 预分频器 PSC ↓ TIMCLK ↓ 主计数器 TIM ↓ TIM 0 ↓ 产生中断3. 两级计数CPU Timer 时序图第一级预分频器SYSCLKOUT 驱动 PSC 递减 PSC 减到 0 → 产生 TIMCLK第二级主计数器TIMCLK 驱动 TIM 递减 TIM 减到 0 → 产生定时器中断4. 主要寄存器寄存器作用PRD / PRDH设置 32 位定时周期TIM / TIMH32 位当前计数值TPR / TPRH存放预分频设定值和当前预分频计数值TCR控制定时器启动、停止、中断TPR、TDDR、PSC 的关系TPR和TPRH是两个 16 位寄存器但里面又分成几个 8 位字段寄存器高 8 位低 8 位TPRHPSCHTDDRHTPRPSCTDDR组合后组合字段含义TDDRH:TDDR16 位预分频设定值PSCH:PSC16 位预分频当前计数值简单记TDDRH:TDDR 决定分频多少 PSCH:PSC 是当前倒计数值 TPR/TPRH 只是存放这些字段的寄存器5. 定时时间定时时间 ≈ (PRD 1) × (TDDR 1) / SYSCLKOUT不使用预分频时TDDR 0 定时时间 ≈ (PRD 1) / SYSCLKOUT例子SYSCLKOUT 60MHz 目标定时 1ms PRD 60000 - 1 TDDR 06. 配置步骤1. 设置 PRD 2. 设置 TPR / TPRH 3. 重装载计数器 4. 使能定时器中断 5. 启动定时器 6. 配置 PIE 和 CPU 中断7. 核心代码CpuTimer0Regs.TCR.bit.TSS 1; // 停止定时器 CpuTimer0Regs.PRD.all 60000 - 1; // 1ms60MHz CpuTimer0Regs.TPR.all 0; // TDDR 0不预分频 CpuTimer0Regs.TPRH.all 0; CpuTimer0Regs.TCR.bit.TRB 1; // 重装载 CpuTimer0Regs.TCR.bit.TIF 1; // 清中断标志 CpuTimer0Regs.TCR.bit.TIE 1; // 使能中断 CpuTimer0Regs.TCR.bit.TSS 0; // 启动定时器8. 总结CPU Timer 预分频器 32 位倒计数器。 TDDRH:TDDR 设置预分频 PSCH:PSC 是预分频当前值 TIMH:TIM 减到 0 后产生中断。