博客
关于我
stm32学习之按键输入检测
阅读量:687 次
发布时间:2019-03-17

本文共 701 字,大约阅读时间需要 2 分钟。

按键输入的检测有两种基本情况需要处理:

第一种情况是支持连续按。这种设计类似于电视遥控器,只要保持按键按下状态,系统每隔一定时间都会检测一次。例如,静音或调节音量时,持续按键即可实现功能。系统不需要关心上一次是否为有效输入,只要当前检测到低电平(接近报警电平的信号),即可触发相应反应。

第二种情况是不支持连续按。这种情况常见于电源开关等功能。按下按钮后,按钮状态通常会被固定的电平占用(如高电平)。接下来若检测到低电平,才会发现上一次的电平是否为预期状态。如果是高电平延迟,则认为是新输入,才执行相应操作。

实现这种区别的关键在于对电平检测结果进行处理。对于支持连续按的按键,只需要每次检测都触发功能即可。而对不支持连续按的按键,则需要结合先前的电平状态进行判断。例如,上一次是否为高电平,只有当当前检测到低电平时,才会认为是一个有效的按键按压动作。如果是高电平,可能只是按键长时间未释放的情况。

在具体代码实现中,可以通过记录上一次的状态来判断当前输入是否有效。例如,使用static关键字可以保持变量在方法间保持不变,这样每次方法调用时都可以访问和更新状态变量。通过这种方式,系统能够判断当前按压是否是新的有效输入。

这样的设计不仅能够实现按键输入的检测功能,还可以保证系统处理的准确性和可靠性。静态变量的使用能够帮助系统记住上一次的状态,从而做出相应的判断。这与底层硬件差异结合后带来的差异有着重要区别,例如同一按键有时需要上下级控制器协同才能完成。

通过这种方式,不论是按键输入是否需要支持连续按,系统都能正确识别有效输入,确保函数的执行逻辑一致性。这也是在实际硬件开发中需要注意的重要细节。

转载地址:http://zuwez.baihongyu.com/

你可能感兴趣的文章
java 线程 栈_Java线程堆栈分析
查看>>
#pragma data_seg() 共享数据// MyData段 // 进程 // DLL
查看>>
#NOIP前数学知识总结
查看>>
java书籍_还搞不定Java多线程和并发编程面试题?你可能需要这一份书单!
查看>>
java序列化_java对象的序列化和反序列化
查看>>
java开发区块链_用Java代码实现区块链
查看>>
java快捷键eclipse_eclipse的设置和一些快捷键
查看>>
java拼车平台(ssm框架毕业设计)
查看>>
Java指定区间返回随机数
查看>>
Java推动老年人社区服务(毕设源码+mysql+lw)
查看>>
Java提高班(六)反射和动态代理(JDK Proxy和Cglib)
查看>>
java操作List
查看>>
Java操作Sql语句 出现迭代死循环 (Bug排查)
查看>>
#Leetcode# 92. Reverse Linked List II
查看>>
# tail -f /var/log/zabbix/zabbix_agentd.log sudo: sorry, you must have a tty to run sudo
查看>>
java攀枝花市房屋租售信息管理平台的设计与实现(ssm)
查看>>
java教学团队管理系统(ssm)
查看>>
java教学网站(ssm)
查看>>
java教学质量管理平台(ssm)
查看>>
@Transactional踩坑实践,你能看的出来么?
查看>>