static void __irq key_handler(void) { Uart_Printf("\nkangear!\n"); /*判断是否是按键K2产生的中断*/ // if(rINTPND==BIT_EINT8_23) // { ClearPending(BIT_EINT8_23); //if(rEINTPEND&(1<<11)) //{ //delay(1000); rEINTPEND |= 1<< 11; Disp_num(BIT_EINT8_23); beep_run(); //} // } }
进一次中断就可以打印一次这个,当我其它不变是,程序运行起来之后我吃惊地发现这按下键之后它居然一直进出中断,这是我以前不知道的。
然后我就想起来了,将其改为边沿触发,代码好下:
rEXTINT1 |= 0x2<<12;
然后我要的答案就出来了,如果正常顺序清理这个我按下键就只会打印一次信息。
如果我反顺清理中断标志位就会进中断两次(只是两次)。
这下我彻底明白了,你说的是对的。
不过最后对于用LED来判断我觉得不好判断。因为你显示的一瞬间就又进入了中断,就不会看清楚,通过做这个实验我蜂鸣器都不响了,因为这个时间太短了。