用dsp28335写一个外部中断的例程
时间: 2023-10-06 21:08:12 浏览: 130
好的,以下是一个基本的外部中断的例程,使用的是DSP28335的GPIO0引脚作为中断引脚。当GPIO0的引脚状态从低电平变为高电平时,触发外部中断,执行中断服务程序。
```c
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
interrupt void ext_isr(void);
void main(void)
{
// 初始化系统时钟
InitSysCtrl();
// 初始化GPIO
InitGpio();
// 配置GPIO0为输入引脚
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 0;
GpioCtrlRegs.GPAQSEL1.bit.GPIO0 = 0;
EDIS;
// 配置外部中断1
EALLOW;
PieVectTable.XINT1 = &ext_isr;
IER |= M_INT1;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
EINT;
EDIS;
// 等待中断
while(1);
}
interrupt void ext_isr(void)
{
// 中断服务程序
// 这里可以写入要执行的代码
// ...
// 清除中断标志位
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
```
在上述代码中,我们首先初始化了系统时钟和GPIO引脚,然后将GPIO0配置为输入引脚,并配置外部中断1,将中断服务程序指向ext_isr函数。在ext_isr函数中,我们可以编写需要执行的中断服务程序,并在最后清除中断标志位。最后在主函数中等待中断的触发。
阅读全文