当前位置: 首页 > news >正文

深入解析:全功能按键非阻塞式

0.实物接线图


1.全功能按键非阻塞式建立

简单来说就是实现按键的单击、双击、长按等效果

定时器中断的固定时间一般可取20~40ms,这样可以天然的过滤掉按键的抖动


2.标志位定义


3.置标志位的时刻


4.状态转移图

状态转移图是状态机思路最重要的部分,画好了状态转移图,代码就能很顺利的完成

红字:状态名称;绿字:触发状态转移的条件;蓝字:对应位置需要执行的程序功能

首先定义一个全局变量或者静态变量,来表示状态码


5.全功能按键非阻塞式搭建代码

第一步:复制定时器实现非阻塞式程序代码,命名为全功能按键非阻塞式实现

第二步:改造Key.c代码

Key.h头文件声明

第三步:主函数调用

全功能按键非阻塞式搭建完整代码


6.按键接法

7.移植流程

Key.h中

确定KEY_COUNT按键个数

定义每个按键的名称和索引号

Key.c中

实现Key_Init按键引脚初始化的代码

实现Key_GetState读取按键引脚状态的代码

main.c中

自行实现一个1ms定时中断,并在中断里调用Key_Tick函数

调用Key_Check函数,若指定按键的指定事件发生,则返回1,否则返回0

8.注意事项

在一轮主循环中,只能检查一次指定按键的指定事件(KEY_HOLD除外),若确实需要检查多次,则可先调用一次Key_Check函数并用变量存储返回值,后续多次判断此变量即可

错误,因为在Key_Check函数中已经清除标志位了,在次检测是检测不到的

加一个变量存储即可

双击事件的存在,使得单击事件响应有一些延迟,若程序中没有使用到双击,则可将双击时间阈值改为0,这样可以消除单击事件的延迟

按键产生了事件,对应的标志位就会一直置1,直到检查了此事件,才会自动清0,这在模式切换时可能会导致误动作

例如:模式1中没有检查过某个标志位,但是按下过按键,此标志位已经置1,随后切换为模式2,开始检查此标志位,那么一旦进入模式2,此标志位的动作就会立刻响应

解决办法:在切换模式时,统一将所有的Key_Flag清0,避免上一个模式的按键标志位对这个模式产生影响

http://www.jsqmd.com/news/323075/

相关文章:

  • 2026年知网AIGC检测又升级了,这样降AI才能一次过
  • kali 基础介绍(Lateral Movement、Collection)
  • 【游戏推荐】消失的钓鱼 去钓鱼了 (GONE Fishing)免安装中文版
  • 2026年6款降AI率工具横评,哪个效果最好?
  • M³KG-RAG必学:多模态知识图谱增强RAG,解决“听得懂看得见“的收藏级技术方案
  • DeepSeek+豆包+Kimi降AI指令都试了?不如直接用这个工具
  • 个人开发者必看:软著申请材料清单+避坑指南
  • 图解码说-六大设计原则(开闭原则、单一职责原则、里氏替换原则、接口隔离原则、依赖倒置原则、迪米特法则) - 详解
  • 【游戏推荐】停车世界:建设与管理 (Parking World Build and Manage)免安装中文版
  • DeepSeek+豆包+Kimi降AI指令大全:配合工具效果翻倍
  • 基于深度学习YOLOv12的疲劳驾驶检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 3款降AI率工具实测对比:9大平台验证谁能全过?
  • 8大AI场景+工具详解,从PPT到编程全方位提升工作效率(大模型入门指南)
  • 2026年知网AIGC检测不通过?用嘎嘎降AI三步搞定验证
  • 大数据领域数据网格:实现数据价值最大化的途径
  • 2026年免费降AI率工具推荐:研究生亲测这5款最靠谱
  • 【游戏推荐】房产达人2 单机+联机(House Flipper 2)免安装中文版
  • 基于深度学习YOLOv11的疲劳驾驶检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)
  • 华为OD技术面真题 - JAVA开发 - 5
  • 比话降AI和嘎嘎降AI哪个好?花了200块测完结果意外
  • LangChain v1.0+ Model模块全解析:构建高效、灵活的大模型应用
  • Python实战:基于Playwright与异步技术的房产信息智能爬虫
  • 2026毕业论文降AI攻略:从90%降到10%的完整流程
  • 一款基于开源免费AI视觉平台的线下门店的用户画像系统
  • 2000-2024年上市公司融资约束数据SA WW KZ FC指数
  • 【Week6_Day27】【软件测试学习记录与反思】【阶段四 Python, 收集问题, 反思改进,写博客】
  • 2000-2024年上市公司平台生态嵌入程度数据+Stata代码
  • 寒假学习笔记1.27
  • 2017-2024年科技型中小企业名单数据
  • Python招聘信息聚合爬虫实战:使用Playwright与异步技术构建高效数据采集系统