打印

arm lpc 中断不能够返回的问题

[复制链接]
1821|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
780653337378|  楼主 | 2011-11-14 22:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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的板子。

相关帖子

沙发
780653337378|  楼主 | 2011-11-15 09:06 | 只看该作者
问题解决,void IRQ_Eint1()
{
  Display();
  while ((EXTINT&0x02)!= 0)
  {
  EXTINT=0x02;  //清除EINT1 中断标志
  }
  VICVectAddr=0;
}
将其改成
void __irq IRQ_Eint1()
{
  Display();
  while ((EXTINT&0x02)!= 0)
  {
  EXTINT=0x02;  //清除EINT1 中断标志
  }
  VICVectAddr=0;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

17

帖子

1

粉丝