可以间接消抖的按键长按短按识别 - 文章教程

可以间接消抖的按键长按短按识别

发布于 2020-12-28 字数 928 浏览 1193 评论 0

按键按下时触发按键计时,按键释放结束计时,计时时间 Tkey < Tshort 时,判为短按。Tkey > Tlong 时,判为长按。按键在触发时需要消除抖动,抖动本质上也是一次极短的短按,因此可以根据短按时间来消除抖动。定时器定时扫描端口,源代码如下:

if (D_keyDown()){
  if (x_key.keyTmCnt < D_maxCntNum)  {
    x_key.keyTmCnt++;
  }
  
  if (x_key.keyTmCnt >= D_timeShortKey)  /* 大于D_minTimeFilter判为有效按键,短按 */
  {
    x_key.shortKeyFlag = D_TRUE;
  }
  
  if (x_key.keyTmCnt >= D_timeLongKey)   /* 长按 */
  {
    x_key.keyState = D_keyPushLong;
    if (x_key.shortKeyFlag == D_TRUE)
    {
      x_key.shortKeyFlag = D_FALSE;  /* 清楚短按标志,防止误触发,很重要 */
    }
  }
}else{
  x_key.keyTmCnt = 0;
  if (x_key.shortKeyFlag == D_TRUE){
    x_key.shortKeyFlag = D_FALSE;
    x_key.keyState = D_keyPushShort;
  }
}

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

目前还没有任何评论,快来抢沙发吧!

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

2891 文章
评论
84935 人气
更多

推荐作者

伊面

文章 0 评论

白况

文章 0 评论

七禾

文章 0 评论

亢潮

文章 0 评论

悲念泪

文章 0 评论