class="markdown_views prism-atom-one-light">
对外部中断1完整的配置一次,以供参考
函数的功能是,
在外部信号持续输入的情况下,且下降沿触发外部中断。
每隔一段时间,GPIO0和GPIO1的LED等闪烁。
在一段时间后,系统停止,LED灯停止闪烁。
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
interrupt void xint1_isr(void);
volatile Uint32 Xint1Count;
Uint32 LoopCount;
void main(void)
{
InitSysCtrl();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
PieVectTable.XINT1 = &xint1_isr;
EDIS;
Xint1Count = 0;
LoopCount = 0;
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
EDIS;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
IER |= M_INT1;
EINT;
EALLOW;
GpioIntRegs.GPIOXINT1SEL.bit.GPIOSEL = 15;
EDIS;
XIntruptRegs.XINT1CR.bit.ENABLE = 1;
XIntruptRegs.XINT1CR.bit.POLARITY = 1;
for(;;)
{
if(LoopCount == 40)
{
asm(" ESTOP0");
}
}
interrupt void xint1_isr(void)
{
Xint1Count++;
if (Xint1Count==100)
{
LoopCount++;
Xint1Count=0;
}
GpioDataRegs.GPATOGGLE.bit.GPIO0 = 1;
GpioDataRegs.GPATOGGLE.bit.GPIO1 = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}