IAR环境下中断函数无反应

2013-04-05 补充:终于明白lpc2xxx_cstartup.s79对中断的控制过程了!!!!

说明:一下文章虽然可以解决问题,但是只为解决问题而解决问题,为避免误人子弟,
更新博文: IAR环境下中断控制 http://blog.csdn.net/shi020910/article/details/8762442



实验环境:IAR开发环境

                    LPC2148开发板


在IAR下开发真是各种特殊各种问题啊。。。

这次的问题是中断函数没有反应

解决方法是:

1)将Config目录下的lpc2xxx_cstartup.s79文件中的关于中断的注释去掉,如图:


2)在中断入口函数前加上

#pragma vector = 0x18(IRQ入口函数)

#pragma vector = 0x1C(FIQ入口函数)

//LED
#pragma vector = 0x18
__irq void irq_handler(void)
{
  //delay(1000);
  if((IO1PIN&(0x1<<16))==0)
    IO1SET |= 0X1<<16;
  else
    IO1CLR |= 0x1<<16;
  
  EXTINT = 0x1;
  VICVectAddr = 0X0;
}
//BEEP
#pragma vector = 0x1C
__irq void fiq_handler(void)
{
  IO0SET |= 0X1 << 7;
  delay(50);
  IO0CLR |= 0X1 << 7;
  EXTINT = 0x4;
  VICVectAddr = 0X0;
}


就这么简单就解决了!可怜了网上找老半天没找着靠谱的答案。

嘿嘿,小小坏心眼,需要代码的人帮忙给点下载分吧~~我可是传了整个工程啊

代码内容:中断控制LED和蜂鸣器

下载地址:http://download.csdn.net/detail/shi020910/5189362


2013-04-02 补充:今天刚刚发现,其实可以把config目录下的lpc2xxx_cstartup.s79直接去掉,然后不需要加那个#pragma vector = 0x18(IRQ入口函数)也可以了。。不过写FIQ时还是要加的,要不然没办法规定入口地址啊,不像IRQ一样,可以规定中断入口地址。




你可能感兴趣的:(嵌入式)