各位大仙,开发管教中断功能出现问题,初始化代码如下:
void KeyInit(void)
{
P01_Input_Mode;
clr_P0S_1;
set_P0S_1;
Enable_INT_Port0;
Enable_BIT1_RasingEdge_Trig;
set_EPI;// Enable pin interrupt
}
我要配置P01为按键中断引脚,目前IO直接接地,中断函数如下:
void PinInterrupt (void) interrupt 7
{
printf("PinInterrupt PIF 0x%bx\n",PIF);
Timer1_Delay10ms(10);
if(PIF == 0x02){
//清除外部中断标志
SetMcuNeedTo_ISR(KEY_NEED_READ);
}
PIF &= 0x00;
printf("after PIF 0x%bx\n",PIF);
}
目前初始化代码只有串口、delay,LED灯和这个按键的初始化,while大循环里面只有printf打印,结果就是while进不去,然后串口打印如下:
[2021-02-16 13:17:38.249]# RECV ASCII>
after PIF 0x10
PinInterrupt PIF 0x10
[2021-02-16 13:17:38.361]# RECV ASCII>
after PIF 0x10
PinInterrupt PIF 0x10
[2021-02-16 13:17:38.474]# RECV ASCII>
after PIF 0x10
PinInterrupt PIF 0x10
以上log无限循环,p0.4目前接了个LED灯,所以很奇怪这个中断不停地来是个什么情况。
而且PIF=0的操作也没生效,中断标志清不掉,太见鬼了 |