你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
查看全部评分
xiajintaord 发表于 2018-6-8 17:01 按键的消抖分为两种: 1、硬件消抖; 2、软件消抖
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 我利用了状态机处理,如果不需要释放消抖的话,即使按键释放要执行某个动作,应该也不会有问题的。 ...
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
1、硬件消抖;
2、软件消抖
你这种情况使用的软件消抖,所以才需要考虑释放要不要消除抖动;
如果按键不多,可以使用硬件消抖的方案,就不需要考虑这么复杂的逻辑了。
硬件消抖有很多的方法,并联电容、RS触发器等等;可以去了解一下。
评分
查看全部评分
谢谢。不过我需要控制成本,目前不考虑硬件消抖。关于硬件消抖的方法之前也有了解过。
定时检测应该也算是在消抖吧。按键每次按下的时间一般都要大于100ms的,我现在是每10ms判断一次,既能保证按键操作不会丢失,又能节省mcu的消耗。
如果没有硬件消抖,软件消抖应该是不能少的吧,你所说的原子的我不太清楚(下去我去了解一下),但是我认为他肯定也会在隔几毫秒后再检测一次按键的。如果同时使用了中断线和定时器实时检测感觉太消耗片上资源了,也只适合开发板上单例程学习,不适合拿到工程上使用吧。不过双击这个功能我倒是没有考虑到,也可以给我的程序补充上去。
我利用了状态机处理,如果不需要释放消抖的话,即使按键释放要执行某个动作,应该也不会有问题的。
不一定,假设现在是按键闭合期间,这时出现抖动,会误判为按键释放。
评分
查看全部评分
释放需不需要消抖,得看机制。
如果程序按下消抖,是用的延时死等,取键值后紧跟着执行键码对应的操作。这种情况抬起不需要消抖。
像电脑标准行列矩阵键盘是需要消抖的,因为按下和抬起都要发键值。
因为它是循环检测,检测一次把所有键位都检测一遍,不管有多少键按下,都会记住相应状态。
根据两次状态的不同,来判断是哪个键,是抬起还是按下操作。第一、二次循环,发现有键状态变化,那么第三次检测到与第二次相同,方才认为是有效按下或抬起来动作。
评分
查看全部评分