标题: STM32 外部中断 消抖和无消抖 求解惑 [打印本页]

作者: 八仙    时间: 2017-4-8 18:14
标题: STM32 外部中断 消抖和无消抖 求解惑
//消抖        外部中断3服务程序
void EXTI3_IRQHandler(void)
{
        delay_ms(10);//消抖
        if(KEY1==0)         //按键KEY1
        {                                 
                LED1=!LED1;
        }                 
        EXTI_ClearITPendingBit(EXTI_Line3);  //清除LINE3上的中断标志位  
}
//  无消抖  
void EXTI3_IRQHandler(void)
{
     if(EXTI_GetITStatus(EXTI_Line3)!=RESET)    //判断标号3线上的中断是否发生
     {
         LED1=!LED1;
         EXTI_ClearITPendingBit(EXTI_Line3); //清除 LINE 上的中断标志位
    }
}  


不管消不消抖,只要外部中断按键发生上升沿或下降沿 电平变化,中断不就发生了吗,所以第二个不消抖的,还判断中端是否发生不就没意义了吗?已经进入中断了 标志位就已经置位了,还检测 无意义啊、、


作者: yzwzfyz    时间: 2017-4-8 21:59
不用问别人,你把抖动,看成是按了三次、四次按键、N次按钮。
评估一下,与只按一次有何区别?
作者: 八仙    时间: 2017-4-10 18:05
yzwzfyz 发表于 2017-4-8 21:59
不用问别人,你把抖动,看成是按了三次、四次按键、N次按钮。
评估一下,与只按一次有何区别?

不懂

作者: 51Lovers    时间: 2017-4-10 20:00
基本上软件消抖都是用延时来处理,亦即防止意外电平变化,真实按键在上百ms,延时10~20ms再判断意义重大。
作者: caojunchocjc    时间: 2017-4-10 22:25
如果你不消抖,可能在100ms内触发很多次,如果触发一次小灯变化一次状态,没有消抖,你按下可能出发了很多次,就没有意义了
作者: 13560380305    时间: 2017-4-10 23:12
多次判断




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1