外部中断的小问题

2019-07-20 21:34发布


void EXTI4_IRQHandler(void)
{
        delay_ms(10);       
        if(KEY0==0)         
        {                                 
                LED0=!LED0;       
                LED1=!LED1;       
        }                 
         EXTI_ClearITPendingBit(EXTI_Line4);
}

将上面程序改成
void EXTI4_IRQHandler(void)
{
        delay_ms(10);       
        if(KEY0==0)         
        {                                 
                LED0=!LED0;       
                LED1=!LED1;
                EXTI_ClearITPendingBit(EXTI_Line4);        
        }                 
         
}会造成按键不灵了,我理解的中断清除标志位不是需要程序进入中断才需要清除么?当按键按下才会进入中断服务程序,而按键按下中断清除位不论放在IF函数里面还是外面都会执行啊,   为什么放里面就出错了?求解?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
xuande
1楼-- · 2019-07-20 23:26
 精彩回答 2  元偷偷看……
q546163199
2楼-- · 2019-07-21 03:37
xuande 发表于 2016-6-12 16:00
按键有抖动,
KEY0==0可能不成立。

但是还有问题啊,delayms(10)已经起到了软件消除干扰的问题了

一周热门 更多>