微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > LPC2131 外部中断问题

LPC2131 外部中断问题

时间:10-02 整理:3721RD 点击:
请问,我用了外部中断 为什么中断结束后就无法返回主程序。 我引脚,寄存器全部清零过了。void __irq ENIT1(void)//用于关闭闹钟
{  
   delay(10);
   if((IO0PIN & KEY1) == 0)
    {
       while((IO0PIN & KEY1) == 0);         
       IO0CLR = BEEP;
    }
    EXTINT = 0x02;
    VICVectAddr = 0x00;
}

void ENIT1Init(void)//用于关闭闹钟
{   
     EXTMODE |= 0x02;
     EXTPOLAR = 0x00;
     VICIntSelect = 0x00;
     VICVectCntl1 = 0x2f;
     VICVectAddr1 = (uint32)ENIT1;
         VICIntEnable |= 0x00008000;
}

是不是还有中断标志位没有清零?
是不是使用电平触发中断的方式?这样只要按键按下没放开,中断一返回,就又马上中断了;
可以使用电平变化触发的方式避免这个情况产生;
在中断例程里面,不要做延时、循环、等待这些事,中断只能处理必须处理的事,延时、循环、等待应该放到正常程序内进行

把  

  1. EXTINT = 0x02;
  2. VICVectAddr = 0x00;

复制代码


改成

  1. EXTINT |= 0X01;         //中断标志清空
  2. VICVectAddr =0;         //硬件中断复位

复制代码


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top