按键消抖总是消不干净,请问有没有好的方法?就用的最普通的按键

2019-07-21 00:26发布

[mw_shl_code=c,true]void EXTI0_IRQHandler(void)
{
        delay_ms(10);//消抖
        if(WK_UP==0)                  //清零按键
        {               
                         count1=0;//所有数置零
                         count2=0;//所有数置零
                         bushuge=0;//所有数置零
                   bushushi=0;//所有数置零
                         mbushushi=0;//所有数置零
                         mbushuge=0;//所有数置零
                countz=count1*10+count2;//所有数置零
                bushu=bushushi*10+bushuge;//所有数置零
                mbushu=mbushushi*10+mbushuge;//所有数置零
                        printf("%d ",countz);//打印到串口
        }
        EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位  
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
qhwan_love
1楼-- · 2019-07-22 06:09
 精彩回答 2  元偷偷看……
负西弱
2楼-- · 2019-07-22 08:53
 精彩回答 2  元偷偷看……
it_do_just
3楼-- · 2019-07-22 13:52
本帖最后由 229382777@qq.com 于 2016-1-7 20:04 编辑

你的按键中断处理的东西真是多啊,不建议在中断里面处理那么多事,考虑实际项目不能在中断里面用delay那样消抖,最普通的按键实现可以有多种方式,如楼上所说的论坛很多人分享过他们的方法,下面的帖子就是一个,你可以参考,觉得不够你可以善用论坛的搜索功能
http://www.openedv.com/forum.php ... hlight=%B0%B4%BC%FC
没有对象的程序员
4楼-- · 2019-07-22 14:09
中断中用delay延时,这很糟糕!!!普通按键就不建议开个中断了,多一级中断嵌套多个麻烦,推荐定时扫描计数变量达到时间确认按键有效
864384664
5楼-- · 2019-07-22 17:11
没有对象的程序员 发表于 2016-1-7 21:17
中断中用delay延时,这很糟糕!!!普通按键就不建议开个中断了,多一级中断嵌套多个麻烦,推荐定时扫描计 ...

谢谢,我会改进的
864384664
6楼-- · 2019-07-22 22:11
TinyBoy 发表于 2016-1-7 20:51
你写按键就专门考虑按键扫描,不要在按键扫描里面做其他事情。函数的内聚性一定要强,做成模块,除了按键这 ...

谢谢提醒,我记住了!

一周热门 更多>