不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。 同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文 ...
一 思路 基于STM ,按键处理,思路是这样的: 每 ms左右一次去扫描按键,用一个key now记录当前值,用key last记录上次的值,如果key now和key last同时有效,则开始进行cnt 。 我设定两个阈值,LONG PRESS为 ms s ,SHORT PRESS为 ms ms,去抖 。 cnt大于LONG PRESS,表示是长按,反之再判断cnt是不是大于SHORT PRE ...
2014-06-27 12:32 0 12087 推荐指数:
不过我在网上游逛了很久,也看过不少源程序了,没有发现这种按键处理办法的踪迹,所以,我将他共享出来,和广大同僚们共勉。我非常坚信这种按键处理办法的便捷和高效,你可以移植到任何一种嵌入式处理器上面,因为C语言强大的可移植性。 同时,这里面用到了一些分层的思想,在单片机当中也是相当有用的,也是本文 ...
:在定时器里面处理独立按键的扫描程序,可以避免上述问题。*/#include "REG52.H"#define ...
IO输入的姿势 对于IO输入采用与IO输出类似的姿势 1 使能时钟 2 初始化IO口 2.1 定义一个初始化结构体 2.2 选择要初始化的IO口 2.3 ...
1.按键消抖的原理 图1.按键抖动示意图 我们平常所用的按键为机械弹性开关,由于触点的弹性作用,按键在闭合时不会马上稳定的接通,而是有一段时间的抖动,在断开时也不会立即断开。抖动时间由按键的机械特性所决定,一般为5ms~10ms。所以我们在做按键检测时都要加一个消抖的过程 ...
一般来说按键可以用一个ADC通道来做按键的扫描工作,根据各个按键上的下拉电阻不同而识别不同种的按键状态,在按键数不多且不适合做矩阵键盘的时候而且按键数又不可忽略的占用过多的IO口这个时候可以使用ADC扫描来做按键的扫描。普通情况下一个按键可用普通IO口或者ADC端口做按键扫描。 如图,按键 ...
在按下按键的时候,在闭合和断开的瞬间有一连串的抖动。 这样一次按下的动作可能会触发很多次。 所以,当检测到按键状态变化时,不是立即去响应动作,而是先等待闭合或断开稳定后再进行处理。 按键消抖可分为硬件消抖和软件消抖。 消除抖动有软件和硬件两种方法。 通常我们用软件消抖。 最简单的消抖原理 ...
一般的按键输入软件接口程序非常简单,在程序中一旦检测到按键输入口为低电平(有时可能为高),便采用软件延时的方 法来进行消抖,然后再次检测按键输入,如果再次确认为低电平则表示有按键按下,转入执行按键处理程序。如果延时后检测的电平为高电平则放弃本次按键检测, 重新开始一次按键检测过程。在简单的系统中 ...
KEY_Scan 函数,则是用来扫描这 4 个 IO 口是否有按键按下。 KEY_Scan 函数, 支持两种扫描方式,通过 mode 参数来设置。 当 mode 为 0 的时候, KEY_Scan 函数将不支持连续按, 扫描某个按键,该按键按下之后必须要松开,才能第二次触发,否则不 ...