本帖最后由 火山LF 于 2016-10-13 10:41 编辑
解决方案:#pragma vector = PORT4_VECTOR;
__interrupt void PORT4_ISR(void)
{
wait(30);//*delay 30ms
if(GPIO_getInputPinValue(GPIO_PORT_P4, GPIO_PIN5) == 0)
{
btn_flag ^= 1;
GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
}
GPIO_clearInterrupt(GPIO_PORT_P4, GPIO_PIN5);
}
用示波器观察按键低电平的时长,中断延时必须比按键低电平的时长短,不然进不去判断,延时的时间,通过调整,发现30ms的时候,实现结果较好。下面添加了按键IO的电平判断情况,确保是一次按键行为,这种方法,按上个上百次,实验结果是正确的。
虽然是很简单的问题,但是也要学着验证这些问题
|