你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
zhao.zhao 发表于 2018-6-8 16:13 我一般用定时检测,没有消抖的问题了。按键在释放时也会经历一个和按下时相同的消抖过程,既然按下时已经消 ...
与龙共舞 发表于 2018-6-8 15:14 其实我看原子的 在按下 释放 都没消抖 他的做法: 不单单是按键GPIO的中断线 他还用一个定时器去实时检测 ...
wenyangzeng 发表于 2018-6-8 16:02 如果需要利用按键释放事件执行某个操作,应该需要释放消抖。
ljz1992 发表于 2018-6-8 18:52 我利用了状态机处理,如果不需要释放消抖的话,即使按键释放要执行某个动作,应该也不会有问题的。 ...
查看全部评分
wenyangzeng 发表于 2018-6-8 20:43 不一定,假设现在是按键闭合期间,这时出现抖动,会误判为按键释放。
huangxuejia-292 发表于 2018-6-9 11:40 https://www.stmcu.org.cn/module/forum/thread-615126-1-1.html 以前发的帖子,请参考。
huangxuejia-292 发表于 2018-6-9 11:50 对按键,个人有一下看法: 1 分驱动和应用。按键扫描就是驱动;长按短按连击都是应用,两者要分开。 为什 ...
定时检测应该也算是在消抖吧。按键每次按下的时间一般都要大于100ms的,我现在是每10ms判断一次,既能保证按键操作不会丢失,又能节省mcu的消耗。
如果没有硬件消抖,软件消抖应该是不能少的吧,你所说的原子的我不太清楚(下去我去了解一下),但是我认为他肯定也会在隔几毫秒后再检测一次按键的。如果同时使用了中断线和定时器实时检测感觉太消耗片上资源了,也只适合开发板上单例程学习,不适合拿到工程上使用吧。不过双击这个功能我倒是没有考虑到,也可以给我的程序补充上去。
我利用了状态机处理,如果不需要释放消抖的话,即使按键释放要执行某个动作,应该也不会有问题的。
不一定,假设现在是按键闭合期间,这时出现抖动,会误判为按键释放。
评分
查看全部评分
释放需不需要消抖,得看机制。
如果程序按下消抖,是用的延时死等,取键值后紧跟着执行键码对应的操作。这种情况抬起不需要消抖。
像电脑标准行列矩阵键盘是需要消抖的,因为按下和抬起都要发键值。
因为它是循环检测,检测一次把所有键位都检测一遍,不管有多少键按下,都会记住相应状态。
根据两次状态的不同,来判断是哪个键,是抬起还是按下操作。第一、二次循环,发现有键状态变化,那么第三次检测到与第二次相同,方才认为是有效按下或抬起来动作。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
好像还没有看到过你这种说法。一般来说抖动都是出现在按下和释放的过程,中间的一段时间都稳定的闭合期间,这个期间没有看到相关资料说是会出现抖动的
做了按下消抖,
释放的消抖就没有必要了。如果做释放消抖还影响你的连接模式。类似双击,三击、五击这些,可以做下这些功能,你就对这个按键功能非常了解了
评分
查看全部评分
当按下的时候,会触发一次,这个时候要处理消抖,完成后更新按键状态
如果不松开,是不会有上升沿中断的。
如果松开后,会产生上升沿中断,这个时候,只要比较下按键状态,就可以了。
评分
查看全部评分
以前发的帖子,请参考。
1 分驱动和应用。按键扫描就是驱动;长按短按连击都是应用,两者要分开。
为什么呢?今天你要3连,明天要9连击,怎么改?今天1秒算长按,明天老板说做成2秒吧,你打算改底层驱动?
2 驱动,也就是按键扫描,只做扫描,有变化,就识别。你说要不要做松开防抖?
3 Unix/Linux的接口设计有一句通用的格言“提供机制而不是策略”。对于按键来说:你可以做长按,但是怎么长按我不管;我支持你做连击,你想多少连是你的事。
评分
查看全部评分
非常感谢分享,下载学习一下。
功力不够,看不懂。也是处于刚学习的地步,对于驱动和应用也不知道如何区分,更不知道如何去将两者划分开来。至于机制和策略更不懂了,还有好多要学习的啊!