dsp28335的定时器1中断怎么配置
时间: 2024-04-13 07:29:18 浏览: 411
在DSP28335上配置定时器1中断的步骤如下:
1. 首先,需要配置定时器1的寄存器。定时器1的寄存器包括 TCR、TPR、TPRH、TIM、PRD 等。具体配置可参考 TCR(定时器控制寄存器)和 PRD(周期寄存器)的设置。
例如,可以通过以下代码配置定时器1的周期为 1ms:
```c
// 设置周期
EPwm1Regs.TBPRD = 15000; // 定时器周期为 15000 个时钟周期 (15000 = 1ms * 150MHz / 1)
// 启用定时器
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 设置计数模式为向上向下计数
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 禁用相位补偿
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // 高速时钟分频因子设置为1
EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 时钟分频因子设置为1
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_DISABLE; // 禁用同步输出
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 使用影子寄存器加载周期寄存器
// 启用中断
EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // 中断触发条件为计数器归零
EPwm1Regs.ETSEL.bit.INTEN = 1; // 使能中断
EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; // 中断发生后立即响应
```
2. 在中断向量表中设置定时器1的中断服务程序。DSP28335的中断向量表位于 Flash 的 0x3FDC00 处。可以通过修改对应的中断向量表地址来设置定时器1的中断向量。
```c
// 设置定时器1的中断向量
PieVectTable.EPWM1_INT = &epwm1_isr;
```
3. 编写定时器1的中断服务程序。在定时器1中断触发时,该中断服务程序会被执行。
```c
interrupt void epwm1_isr(void)
{
// 在此处编写定时器1中断服务程序的代码
// ...
// 清除中断标志位
EPwm1Regs.ETCLR.bit.INT = 1;
// 重新使能中断
PieCtrlRegs.PIEACK.all = PIEACK_GROUP3; // 清除中断标志位并使能中断
}
```
以上是配置DSP28335定时器1中断的基本步骤,你可以根据具体的需求进行修改和优化。
阅读全文