#include<lpc210x.h>
#define INT32U unsigned int
#define LED1 1<<17
#define LED2 1<<18
#define LED3 1<<19
void Delay(INT32U num)
{
while(num)
{
num--;
}
}
void Display()
{
IOCLR = LED1;
Delay(500000);
IOSET = LED1;
}
void Displayled()
{
while(1)
{
IOCLR = LED2;
Delay(500000);
IOSET = LED2;
Delay(500000);
}
}
void IRQ_Eint1()
{
Display();
while ((EXTINT&0x02)!= 0)
{
EXTINT=0x02; //清除EINT1 中断标志
}
VICVectAddr=0;
}
int main()
{
PINSEL0 = 0x50000000;
PINSEL1 = 0x00000000;
IODIR = LED1|LED2|LED3;
IOSET = LED1|LED2|LED3;
VICIntSelect=0;/*全部中断设置为IRQ,若某位为1 是FIQ*/
VICIntEnable=0x00008000;/*使能EINT1,EINT 为第15 位*/
VICVectCntl1=0x2F;/*0xF,15 号中断*/
VICVectAddr1=(int)IRQ_Eint1;/*设置中断服务子程序*/
EXTINT=0x07;
while(1)
{
Displayled();
}
}
在这个程序中,正常执行后,按下按键后能进入中断,但是不能返回到主函数,也不能够再次进入中断,是啥原因啊,我用的是飞利浦的lpc2103的板子。 |