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