C2000 CPU Timer:学习笔记
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 / 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 位预分频当前计数值 |
简单记:
TDDRH:TDDR 决定分频多少
PSCH:PSC 是当前倒计数值
TPR/TPRH 只是存放这些字段的寄存器
5. 定时时间
定时时间 ≈ (PRD + 1) × (TDDR + 1) / SYSCLKOUT
不使用预分频时:
TDDR = 0
定时时间 ≈ (PRD + 1) / SYSCLKOUT
例子:
SYSCLKOUT = 60MHz
目标定时 = 1ms
PRD = 60000 - 1
TDDR = 0
6. 配置步骤
1. 设置 PRD
2. 设置 TPR / TPRH
3. 重装载计数器
4. 使能定时器中断
5. 启动定时器
6. 配置 PIE 和 CPU 中断
7. 核心代码
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. 总结
CPU Timer = 预分频器 + 32 位倒计数器。
TDDRH:TDDR 设置预分频;
PSCH:PSC 是预分频当前值;
TIMH:TIM 减到 0 后产生中断。
-
07.13
红色沙漠悔改圣所怎样探索-红色沙漠悔改圣所探索攻略
-
07.13
李宁app怎么使用-李宁app使用方式
-
07.13
王者荣耀世界如何快速上分-王者荣耀世界最快上分方法
-
07.13
流放之路2战争使者T15碎地流BD如何玩-流放之路2战争使者T15碎地流BD攻略分享
-
07.13
我的便利店 红宝石的获取途径与用途
-
07.13
我的便利店抽奖的玩法
推荐专题
热门阅读
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏