|  | 
 
| 我用外部中断来控制led等,按下一个键对应的灯亮或灭 EINT0 1 2都好使,但EINT4就没反应了,下面是源代码,向大家求助!
 
 /************KEY 中断控制LED  BY WAL ****************
 4 个用户按键
 四个输入引脚:
 EINT0 -----( GPF0  )----INPUT---K4
 EINT2 -----( GPF2  )----INPUT---K3
 EINT4 -----( GPF4  )----INPUT---K2
 EINT1 -----( GPF1  )----INPUT---K1
 ****************************************************/
 void __irq EINT_KEY(void)
 {
 //清中断,向对应位写1 可清0。
 U32 a,b,c;
 a = rSRCPND;
 rSRCPND = a;
 b = rINTPND;
 rINTPND = b;
 c = rEINTPEND;
 rEINTPEND = c;
 //判断那个按键被按下,控制对应的LED 状态
 switch(b)
 {
 case 0x1://k4
 Uart_Printf("4\n");
 if(rGPBDAT & 0x020)//GPBDAT5==1
 rGPBDAT&=0xfdf;
 else
 rGPBDAT|=0x020;
 break;
 
 case 0x2://k1
 Uart_Printf("1\n");
 if(rGPBDAT & 0x040)//GPBDAT6==1
 rGPBDAT&=0xfbf;
 else
 rGPBDAT|=0x040;
 break;
 case 0x4://k3
 Uart_Printf("3\n");
 if(rGPBDAT & 0x080)//GPBDAT7==1
 rGPBDAT&=0xf7f;
 else
 rGPBDAT|=0x080;
 break;
 case 0x10://k2
 //if(c&0x10)
 Uart_Printf("2\n");
 if(rEINTPEND&(1<<4))
 {
 Uart_Printf("22\n");
 if(rGPBDAT & 0x100)//GPBDAT8==1
 rGPBDAT&=0xeff;
 else
 rGPBDAT|=0x100;
 }
 break;
 default:
 Led_Display(0xf);
 break;
 }
 
 }
 /**************外部中断初始化by wal************/
 void  EINT_INIT(void)
 {
 rSRCPND = 0x17;//清除除EINT0 1 2  4 以外中断请求
 rINTMSK = 0xffffffe8;//屏蔽除EINT0 1 2  4 以外的中断源
 
 rEINTMASK = 0xffffef;
 
 rEXTINT0 = 0x22222;//设置EINT0 1 2 3 4下降沿触发
 
 pISR_EINT0 = pISR_EINT1 =pISR_EINT2 =pISR_EINT4_7= (U32)EINT_KEY;
 }
 
 | 
 |