| 
 
| 不知道为什么我用GPIO中断时,只用一个IO口时是可以正常中断的,可是我用了两个不同的IO口,设置两个IO中断就只能进一个中断回调函数 下面的是我的程序
 //GPIO中断实验
 
 #include <stdio.h>
 #include "M051Series.h"
 #include "Driver\DrvGPIO.h"
 #include "Driver\DrvSYS.h"
 void P0CALLBACK(void);
 void P4CALLBACK(void);
 void sys_init(void);
 
 int L_num=0;
 
 void P0CALLBACK(void)
 {
 L_num++;
 if(L_num>=4)   L_num=0;
 }
 /*void P4CALLBACK(void)
 {
 P14_DOUT=~P14_DOUT;
 }*/
 
 void Sys_Init()
 {
 UNLOCKREG();
 SYSCLK->PWRCON.XTL12M_EN = 1;//设定12M外部晶振
 
 DrvSYS_Delay(5000);//等待时钟就绪
 DrvGPIO_Open(E_PORT0,0,E_IO_INPUT);
 DrvGPIO_Open(E_PORT4,0,E_IO_INPUT);
 
 DrvGPIO_InitFunction(E_FUNC_GPIO);                 //指定
 DrvGPIO_SetDebounceTime(5,E_DBCLKSRC_10K);
 DrvGPIO_EnableDebounce(E_PORT0,0);                                          //去抖动
 DrvGPIO_EnableInt(E_PORT0, 0,E_IO_FALLING,E_MODE_EDGE);           //GPIO中断设置
 DrvGPIO_SetIntCallback(P0CALLBACK,0);
 
 /*DrvGPIO_InitFunction(E_FUNC_GPIO);                 //指定
 DrvGPIO_SetDebounceTime(5,E_DBCLKSRC_10K);
 DrvGPIO_EnableDebounce(E_PORT4,0);                                          //去抖动
 DrvGPIO_EnableInt(E_PORT4,0,E_IO_FALLING,E_MODE_EDGE);           //GPIO中断设置
 DrvGPIO_SetIntCallback(0,P4CALLBACK);
 */
 }
 
 int main (void)
 {
 Sys_Init();
 while(1)
 {
 switch(L_num)
 {
 case 1:                _PORT_DOUT(1,7)=0;        P10_DOUT=1; break;
 case 2:                P16_DOUT=0;        P17_DOUT=1; break;
 case 3:                P15_DOUT=0;        P16_DOUT=1; break;
 default:         P10_DOUT=0;        P15_DOUT=1; break;
 
 }
 
 P02_DOUT=0;
 }
 }
 | 
 |