C2000 CPU Timer 学习笔记

​

1. CPU Timer 是什么

C2000 的 CPU Timer 本质是:

复制代码
32 位倒计数器

从设定值开始减,减到 0 后产生中断,然后重新装载,继续下一轮。


2. 工作流程

CPU Timer 流程图​编辑

核心流程:

ini 复制代码
SYSCLKOUT
↓
预分频器 PSC
↓
TIMCLK
↓
主计数器 TIM
↓
TIM = 0
↓
产生中断

3. 两级计数

CPU Timer 时序图
​编辑

第一级:预分频器

复制代码
SYSCLKOUT 驱动 PSC 递减
PSC 减到 0 → 产生 TIMCLK

第二级:主计数器

复制代码
TIMCLK 驱动 TIM 递减
TIM 减到 0 → 产生定时器中断

4. 主要寄存器

寄存器 作用
PRD / PRDH 设置 32 位定时周期
TIM / TIMH 32 位当前计数值
TPR / TPRH 存放预分频设定值和当前预分频计数值
TCR 控制定时器启动、停止、中断

TPR、TDDR、PSC 的关系

TPR 和 TPRH 是两个 16 位寄存器,但里面又分成几个 8 位字段:

寄存器 高 8 位 低 8 位
TPRH PSCH TDDRH
TPR PSC TDDR

组合后:

组合字段 含义
TDDRH:TDDR 16 位预分频设定值
PSCH:PSC 16 位预分频当前计数值

简单记:

makefile 复制代码
TDDRH:TDDR 决定分频多少
PSCH:PSC 是当前倒计数值
TPR/TPRH 只是存放这些字段的寄存器

5. 定时时间

scss 复制代码
定时时间 ≈ (PRD + 1) × (TDDR + 1) / SYSCLKOUT

不使用预分频时:

ini 复制代码
TDDR = 0
定时时间 ≈ (PRD + 1) / SYSCLKOUT

例子:

ini 复制代码
SYSCLKOUT = 60MHz
目标定时 = 1ms
PRD = 60000 - 1
TDDR = 0

6. 配置步骤

markdown 复制代码
1. 设置 PRD
2. 设置 TPR / TPRH
3. 重装载计数器
4. 使能定时器中断
5. 启动定时器
6. 配置 PIE 和 CPU 中断

7. 核心代码

ini 复制代码
CpuTimer0Regs.TCR.bit.TSS = 1;      // 停止定时器

CpuTimer0Regs.PRD.all = 60000 - 1;  // 1ms,60MHz
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. 总结

makefile 复制代码
CPU Timer = 预分频器 + 32 位倒计数器。
TDDRH:TDDR 设置预分频;
PSCH:PSC 是预分频当前值;
TIMH:TIM 减到 0 后产生中断。

​

相关推荐
路上有只喵4 小时前
认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇 11
单片机·嵌入式硬件
不昀5 小时前
开关电源电流互感器怎么选:匝比、采样电阻与复位的计算笔记
单片机·嵌入式硬件·电子元器件
小李不想当小白7 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
智者知已应修善业11 小时前
【51单片机实现从下到上,从上到下,从中间到两边,两边到中间】2024-10-23
c语言·经验分享·笔记·单片机·嵌入式硬件·51单片机
辰哥单片机设计12 小时前
STM32智能药盒丨2027单片机新项目
stm32·单片机·嵌入式硬件
LCG米1 天前
STM32硬件CRC外设实测:多项式固定陷阱、CRC-32校验不匹配根因与软件查表法耗时对比落地
stm32·单片机·嵌入式硬件
La Pulga1 天前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
女神下凡1 天前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
硅基手札1 天前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位