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