各高手,小弟在用LPC2378的外部中断0的时候,它一直不执行中断子程序,就是进不了中断,希望大家给会诊一下。我的程序是这样写的:<br />#include "config.h"<br /><br />#define BEEP 1 << 25 // P4.25控制蜂鸣器,高电平蜂鸣<br /><br />/*<br />*********************************************************************************************************<br />** 函数名称 :DelayNS()<br />** 函数功能 :长软件延时<br />** 入口参数 :dly 延时参数,值越大,延时越久<br />** 出口参数 :无<br />*********************************************************************************************************<br />*/<br />void DelayNS (uint32 dly)<br />{<br /> uint32 i;<br /> <br /> for ( ; dly>0; dly--)<br /> for (i=0; i<50000; i++);<br />}<br /><br />/*<br />*********************************************************************************************************<br />** 函数名称 :IRQ_Eint0()<br />** 函数功能 :外部中断0 EINT0服务程序<br />** 入口参数 :无。<br />** 出口参数 :无。<br />*********************************************************************************************************<br />*/<br />void __irq IRQ_Eint0 (void)<br />{<br /> EXTINT = 0x01; // 清除EINT0中断标志<br /> FIO4SET = BEEP;<br /> DelayNS(1);<br /> FIO4CLR = BEEP;<br /> DelayNS(1);<br /> <br /> VICVectAddr = 0; // 向量中断结束<br />}<br /><br />/*<br />*********************************************************************************************************<br />** 函数名称 :main()<br />** 函数功能 :<br />** 调试说明 :*********************************************************************************************************<br />*/<br />int main (void)<br />{<br /> //------管脚功能设置------<br /> PINSEL0 = 0x00000300; // 设置管脚(P0.0~P0.3、P0.5~P0.15)连接GPIO,P0.4连接计数设置<br /> PINSEL1 = 0x0000EA80; // 设置管脚(P0.16~P0.18、P0.24~P0.31)连接GPIO,(P0.19~P0.22)连接SD卡设置,P0.23连接计数设置<br /> PINSEL2 = 0x50150105; // 设置管脚(P1.0~P1.15)连接到网口设置<br /> PINSEL3 = 0x00000035; // 设置管脚(P1.16~P1.17)连接到网口设置,其他管脚连接GPIO<br /> PINSEL4 = 0x0A900000; // 设置管脚(P2.0~P2.9)连接到GPIO,(P2.11~P2.13)连接SD卡设置,P2.10连接中断<br /> PINSEL6 = 0x00000000; // 设置管脚(P3.0~P3.7)连接到GPIO<br /> PINSEL7 = 0x00008000; // 设置管脚(P3.24~P3.26)连接到GPIO,P3.23连接到计数器(系统中未用到P3.23)<br /> PINSEL8 = 0x00000000; // 设置管脚(P4.0~P4.15)连接到GPIO<br /> PINSEL9 = 0x0F000000; // 设置管脚(P4.24~P4.25、P4.30~P4.31)连接到GPIO(系统中未用到P4.24),(P4.28~P4.29)连接到串口<br /> FIO4DIR = BEEP; // 设定蜂鸣器控制管脚输出 <br /> //------外部中断0初始化------<br /> VICIntSelect = 0x00000000; // 设置所有中断分配为IRQ中断<br /> VICVectPri14 = 0x00; // 分配外部中断0到向量中断0<br /> VICVectAddr14 = (uint32)IRQ_Eint0; // 设置中断服务程序地址<br /> VICIntEnable = 1 << 14; // 使能EINT0中断<br /> EXTMODE |=0x01; //设置中断0为边缘触发<br /> EXTPOLAR = 0x01; //设置为上升沿触发<br /> EXTINT = 0x01; // 清除EINT0中断标志<br /><br /> while (1);<br /> return 0;<br />}<br />/*********************************************************************************************************<br />** End Of File<br />********************************************************************************************************/<br /><br /><br />不知道是我中断设置有问题还是怎么回事,高手们帮帮小弟!先谢了! |
|