TMS320F280025 CPUtimer定时器原理分析与使用
`
文章目录
- TMS320F280025 CPUtimer定时器原理分析与使用
- 框图分析
- 定时器中断
- 定时器使用
-
- CPUtimers.c
- CPUtimers.h
框图分析
定时器框图如图所示
定时器有一个预分频模块和一个定时/计数模块, 其中预分频模块包括一个 16 位的定时器分频寄存器(TDDRH: TDDR) 和一个 16 位的预定标计数器(PSCH: PSC) ; 定时/计数模块包括一个 32 位的周期寄存器(PRDH: PRD)和一个 32 位的计数寄存器(TIMH:TIM)
使用定时器时初始化好定时器,设置好装载值并且启动定时器
每个系统时钟都会使定时器16位的预定标计数器减一,当16位的预定标计数器减到0时,16位的预定标计数器重置,同时32位计数器减一
当32位计数器减到0时,32位计数器重置,同时触发定时器中断
即:
当系统时钟(SYSCLKOUT) 来一个脉冲, PSCH: PSC 预定标计数器减 1, 当 PSCH: PSC 预定标计数器减到 0 的时候, 预定标计数器产生下溢后向定时器的 32 位计数器 TIMH:TIM 借位, 即 TIMH:TIM 计数器减 1, 同时 PSCH: PSC 可以重载定时器分频寄存器(TDDRH: TDDR) 的值; 当计数寄存器 TIMH: TIM 减到 0 产生下溢的时候, 计数寄存器会重载周期寄存器(PRDH: PRD) 的值, 同时定时器会产生一个中断信号给 CPU。
定时器中断
CPU定时器0的中断通过PIE传播给CPU
CPU定时器1和2的中断是直接传播给CPU
注意定时器中断优先级
定时器 0的中断属于 PIE 第一组中断中的第 7 个小中断。
CPU定时器1和2中断
定时器使用
(1) 使能定时器时钟
(2) 初始化定时器参数, 包括制定定时器寄存器地址、 周期寄存器值、 预定标计数器值等。
(3) 定时器的设置
(4) 开启定时器中断功能, 并使能定时器
(5) 编写定时器中断服务函数
CPUtimers.c
/*
* TimerDriver.c
*
* Created on: 2024年8月8日
* Author:
*/
#include "main.h"
#include "TimerDriver.h"
//
// Function Prototypes
//
__interrupt void cpuTimer0ISR(void);
__interrupt void cpuTimer1ISR(void);
__interrupt void cpuTimer2ISR(void);
/*
* 配置定时器CpuTimer0、1、2,注意1、2不经过PIE
*/
void Time