dspf28335定时器定时1
时间: 2023-07-06 14:04:50 浏览: 123
在DSPF28335芯片中,有三个可编程定时器(Timer0、Timer1和Timer2),每个定时器都可以用来产生定时中断。以下是使用Timer1产生1秒定时的步骤:
1. 配置时钟源:使用CPU时钟作为定时器时钟源。可以通过以下代码实现:
```
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0; // 停止定时器时钟
EDIS;
CpuTimer1Regs.TCR.bit.TSS = 1; // 停止定时器1
CpuTimer1Regs.TCR.bit.TRB = 1; // 复位定时器1
CpuTimer1Regs.TCR.bit.TIE = 0; // 禁用定时器1中断
CpuTimer1Regs.TCR.bit.TIF = 0; // 清除定时器中断标志位
CpuTimer1Regs.PRD.all = 150000000; // 1秒钟产生一个中断
CpuTimer1Regs.TCR.bit.TSS = 0; // 启动定时器1
EALLOW;
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // 启动定时器时钟
EDIS;
```
2. 配置中断:将Timer1的中断向量映射到ISR函数并使能中断。可以通过以下代码实现:
```
EALLOW;
PieVectTable.TIMER1_INT = &Timer1_ISR;
EDIS;
PieCtrlRegs.PIEIER1.bit.INTx7 = 1; // 使能Timer1中断
IER |= M_INT1; // 使能CPU中断1
```
3. 实现中断服务程序:编写一个名为Timer1_ISR的函数,用于在定时器中断时执行任务。例如:
```
__interrupt void Timer1_ISR(void)
{
// 执行任务
// ...
CpuTimer1Regs.TCR.bit.TIF = 1; // 清除定时器中断标志位
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; // 确认中断已经完成
}
```
以上步骤完成后,每当Timer1达到计数值150000000时,就会触发一个中断,执行Timer1_ISR函数中的任务。因此,Timer1被配置为每秒触发一次中断。
阅读全文