#include "DSP280x_Device.h"
#include "DSP280x_Examples.h"
void delay(void)
{
int i,j;
for(i=0;i<2550;i++)
for(j=0;j<100;j++);
}
//外部中断服务程序
interrupt void xint1(void)
{
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;//清除中断标志位响应其它中断
if(!GpioDataRegs.GPADAT.bit.GPIO26)
{
delay();
if(!GpioDataRegs.GPADAT.bit.GPIO26)
{
GpioDataRegs.GPATOGGLE.all=0xffff; //将GPIO的状态反转
}
}
}
//外部中断初始化程序
void init_xint1(void)
{
InitSysCtrl();//初始化时钟等系统资源
DINT;//关闭CPU中断
InitPieCtrl();//初始化中断向量表
IER=0x0000;//清除CPU中断
IFR=0x0000;//清除CPU中断标志位
InitPieVectTable();//初始化中断向量表
EALLOW; //寄存器保护
PieVectTable.XINT1 = &xint1;//设置外部中断1的中断向量地址
EDIS; // 取消寄存器保护
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // 启动PIE模块
PieCtrlRegs.PIEIER1.bit.INTx4 = 1; // 启动PIE模块1
IER |= M_INT1; // 开CPU中断1区
EINT; //启动全局中断
EALLOW;//寄存器保护
GpioCtrlRegs.GPAMUX2.bit.GPIO26 = 0; //设定GPIO
GpioCtrlRegs.GPADIR.bit.GPIO26 = 0; //将GPIO1设定为输入
GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 26; // 0代表将外部中断的输入设定为GPIO0
XIntruptRegs.XINT1CR.bit.POLARITY = 0; // 外部中断1采用下降沿中断
XIntruptRegs.XINT1CR.bit.ENABLE = 1; // 启动外部中断
}
//显示用GPIO初始化
void init_gpio(void)
{
EALLOW; //寄存器保护
GpioCtrlRegs.GPAMUX1.all=0x0000; //设定为GPIO
GpioCtrlRegs.GPADIR.all=0xffff; //设定GPIO为输出
EDIS; //取消寄存器保护
}
void main(void)
{
init_xint1();
init_gpio();
GpioDataRegs.GPASET.all=0xffff; //将GPIO置位
while(1); //等待中断
}