硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2766|回复: 1
收起左侧

[客户分享] 简化版按键扫描程序

[复制链接]

84

主题

407

回帖

679

积分

金牌会员

积分
679
QQ
发表于 2021-7-17 20:37:18 | 显示全部楼层 |阅读模式
本帖最后由 雷鹏 于 2021-7-17 20:39 编辑

开发板上的按键扫描程序是很好,但是不适合新手入门学习,结构有点复杂,我做了个简化版的程序,方便新手学习,老手可以略过。
  1.     /*按键处理程序*/
  2.     {
  3.        static uint8_t KeySta=0;
  4.        static uint8_t KeyCout=0;
  5.        static uint8_t KeyLongCout=0;
  6.        static uint8_t KeyRepeat=0;
  7.       
  8.       if(HAL_GPIO_ReadPin(KEY0_GPIO_Port, KEY0_Pin)==GPIO_PIN_RESET) /*KEY0 按下*/
  9.       {
  10.         /*短按*/
  11.         if(KeyCout<KEY_FIR_TIME)
  12.         {
  13.           KeyCout++;
  14.         }
  15.         else
  16.         {
  17.           KeyCout=KEY_FIR_TIME;
  18.           if(KeySta==0)
  19.           {
  20.             KeySta=1;
  21.             printf("KEY0 按下\r\n");
  22.           }
  23.         }
  24.         /*长按检测*/
  25.         if(KeyLongCout<KEY_LONG_TIME)
  26.         {
  27.           KeyLongCout++;
  28.         }
  29.         else if(KeyLongCout==KEY_LONG_TIME)
  30.         {
  31.           KeyLongCout++;
  32.           printf("KEY0 长按\r\n");
  33.         }
  34.         else /*重复检测*/
  35.         {
  36.           KeyRepeat++;
  37.           if(KeyRepeat>=KEY_REPEAT_TIME)
  38.           {
  39.             KeyRepeat=0;
  40.             printf("KEY0 连发\r\n");
  41.           }
  42.         
  43.         }

  44.       
  45.       }
  46.       else/*KEY0 弹起*/
  47.       {
  48.         if(KeyCout)
  49.           KeyCout--;
  50.         else
  51.         {
  52.           if(KeySta==1)
  53.           {
  54.             KeySta=0;
  55.             printf("KEY0 弹起\r\n");
  56.           }
  57.         }
  58.         
  59.         KeyLongCout=0; /*按键弹起后 长按计数器清零*/
  60.         KeyRepeat=0;   /*按键弹起后 连发计数器清零*/

  61.       }
  62.     }
复制代码

武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107868
QQ
发表于 2021-7-19 00:32:11 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-17 01:07 , Processed in 0.147229 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表