技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种IO口按键动作信息获取方法、装置及电子设备与流程  >  正文

一种IO口按键动作信息获取方法、装置及电子设备与流程

  • 国知局
  • 2024-07-31 23:12:03

本技术涉及嵌入式系统的,具体涉及一种io口按键动作信息获取方法、装置及电子设备。

背景技术:

1、随着嵌入式系统的广泛应用,对于用户交互接口的需求也日益增长。特别是在各种控制器和智能设备中,按键作为一种基础且直观的输入方式,扮演着重要的角色。按键的响应速度和准确性直接影响到用户的操作体验,因此,如何有效地获取按键动作信息成为了设计这些系统时的一个核心任务。

2、目前,对于通常用单片机io口做按键输入的设备,程序获取按键动作信息的常见方法是通过不断轮询读取io口的状态。这种方法简单易实现,但存在明显的缺陷。由于机械按键的物理特性,按键在被按下和释放的瞬间会出现抖动,导致信号不稳定,因此需要在软件中实现去抖动逻辑,通常采用原地循环延时的方式。这种处理方法在按键数量较少时尚可应对,但当io口按键较多时,轮询和去抖动处理将占用大量的cpu运算时间,导致处理器不能及时响应其他任务,从而降低整个设备的运行效率。

3、因此,亟需一种io口按键动作信息获取方法、装置及电子设备。

技术实现思路

1、本技术提供一种io口按键动作信息获取方法、装置及电子设备,避免了因为软件去抖导致的cpu资源浪费,提高了单片机的运行效率。

2、在本技术的第一方面提供了一种io口按键动作信息获取方法,该方法包括:响应于定时器的定时中断信号,并暂停当前正在执行的主程序;启动中断服务程序,间隔预设时长对连接的多个io口按键进行中断检测;为各个所述io口按键配置计时存储字节,一个所述io口按键对应于一个所述计时存储字节;获取并监测各个所述io口按键的状态;若在第一时间监测到第一io口按键的状态为按下状态,则持续监测所述第一io口按键在第二时间是否为按下状态,所述第一io口按键为多个所述io口按键中的任意一个io口按键,所述第二时间位于所述第一时间后,且所述第二时间与所述第一时间的间隔时长为所述预设时长;若确定所述第一io口按键在所述第二时间为按下状态,则判断所述第一io口按键对应的第一计时存储字节内的第一计时数据与预设字节数的大小关系;若确定所述第一计时数据小于预设字节数,则将所述第一计时数据增加一个预设单位;恢复所述主程序的执行,并根据所述第一计时数据执行对应的操作。

3、通过采用上述技术方案,通过一个定时中断程序来单独集中处理所有按键的状态读取,减轻了中央处理器的负担。由于不再需要在主程序中不断地轮询每个io口的状态,处理器可以更有效地分配时间给其他任务。这种中断驱动的方法提高了程序的整体效率和响应速度,使得单片机能够更快地响应按键事件,同时保持对其他任务的高效处理。为每个按键配置独立的计时存储字节,使得每个按键的有效按下时间能够通过其对应的计时存储字节数据量化表示。可以精确地跟踪每个按键被按下的持续时间,对于识别短按、长按等不同的按键动作更有效。这种量化方法使得后续处理变得简单明了,便于程序根据不同的计时数据执行相应的操作。去抖动时间靠定时常数确定,有抖动时计时自动清零。这解决了由于按键抖动导致的信号不稳定问题。在定时中断中,只有连续两个预设时长内都检测到按键为按下状态时,才会认为是有效的按键动作,这样就自然地实现了去抖动。这种方法同时提供了一种稳定和可靠的方式来处理按键输入,避免了因为软件去抖导致的cpu资源浪费。提高了单片机的运行效率。

4、可选的,响应于定时器的定时中断信号,并暂停当前正在执行的主程序之前,所述方法还包括:获取所述定时器的初始值和溢出值,所述初始值和所述溢出值间隔时长为所述预设时长;当所述定时器的定时计数达到所述溢出值时,产生所述定时中断信号。

5、通过采用上述技术方案,通过响应定时器的定时中断信号,可以在预设的时间间隔内进行按键状态的检测和处理。定时中断信号的产生可以由定时器的初始值和溢出值来控制,确保按键检测的准确性和稳定性。

6、可选的,获取并监测各个所述io口按键的状态之后,所述方法还包括:若在所述第一时间监测到第二io口按键的状态为非按下状态,则将对应的第二计时存储字节内的第二计时数据清空,所述第二io口按键为多个所述io口按键中的任意一个io口按键。

7、通过采用上述技术方案,当检测到第二io口按键在第一时间为非按下状态时,清空第二计时存储字节内的第二计时数据。这样可以避免误判第二io口按键的按下操作,确保只有在第二时间发现第二io口按键为按下状态时才进行计时。通过清空第二计时数据,可以确保第二计时数据只包含有效的按键持续时间。如果第二io口按键在第一时间为非按下状态,意味着在第二时间之前按键已经释放,因此清空第二计时数据可以排除无效的计时结果,保证计时数据的准确性。

8、可选的,若在第一时间监测到第一io口按键的状态为按下状态,则持续监测所述第一io口按键在第二时间是否为按下状态之后,所述方法还包括:若确定所述第一io口按键在所述第二时间为非按下状态,则确定所述第一io口按键发生了无效动作;将所述第一计时存储字节内的第一计时数据清空。

9、通过采用上述技术方案,通过持续监测第一io口按键的状态变化,如果在第二时间发现该按键为非按下状态,可以判断该按键发生了无效动作。无效动作可能是因为按键在第一时间短暂按下然后立即释放,或者存在按键抖动等干扰因素导致的误触发。通过判断无效动作,可以排除误触发对后续处理的影响,提高按键操作的准确性。将第一计时存储字节内的第一计时数据清空,可以清除无效动作期间的计时记录。这样可以确保第一计时数据只包含有效的按键持续时间,避免无效动作对计时数据的干扰。

10、可选的,若确定所述第一io口按键在所述第二时间为按下状态,则判断所述第一io口按键对应的第一计时存储字节内的第一计时数据与预设字节数的大小关系之后,所述方法还包括:若确定所述第一计时数据等于预设字节数,则将所述第一计时数据清空。

11、通过采用上述技术方案,通过判断第一计时数据与预设字节数的大小关系,可以确定是否达到了字节溢出的临界点。如果第一计时数据等于预设字节数,表示计时已经达到或超过了该字节的最大值,即将发生溢出。为了防止溢出,将第一计时数据清空,可以重新开始计时,避免字节溢出导致的计时错误。

12、可选的,恢复所述主程序的执行,并根据所述第一计时数据执行对应的操作,具体包括:通过所述主程序判断所述第一计时数据与预设阈值的大小关系;若所述第一计时数据小于所述预设阈值,则确定所述第一io口按键对应于短按操作并执行所述短按操作对应的命令;若所述第一计时数据大于或等于所述预设阈值,则确定所述第一io口按键对应于长按操作并执行所述长按操作对应的命令。

13、通过采用上述技术方案,通过根据计时数据判断按键操作类型,并执行相应的命令,可以确保按键操作的准确性。根据预设阈值将按键操作区分为短按和长按,使单片机能够正确响应用户的意图。根据短按和长按操作的不同,可以执行不同的命令和功能。

14、可选的,若所述第一计时数据大于或等于所述预设阈值,则确定所述第一io口按键对应于长按操作并执行所述长按操作对应的命令之后,所述方法还包括:获取各个所述io口按键被按下的先后顺序,以及对应的按下操作,所述按下操作包括所述短按操作和所述长按操作;根据所述先后顺序和所述按下操作,从预设数据库中匹配对应的预设动作逻辑序列;执行所述预设动作逻辑序列对应的动作处理。

15、通过采用上述技术方案,通过获取按键按下的先后顺序和对应的按下操作,并匹配预设动作逻辑序列,可以实现对完整操作序列的处理。这样可以确保按键操作被正确识别和处理。

16、在本技术的第二方面提供了一种io口按键动作信息获取装置,该装置包括:响应模块、处理模块以及获取模块;所述响应模块,用于响应于定时器的定时中断信号,并暂停当前正在执行的主程序;所述处理模块,用于启动中断服务程序,间隔预设时长对连接的多个io口按键进行中断检测;所述处理模块,还用于为各个所述io口按键配置计时存储字节,一个所述io口按键对应于一个所述计时存储字节;所述获取模块,用于获取并监测各个所述io口按键的状态;所述处理模块,还用于若在第一时间监测到第一io口按键的状态为按下状态,则持续监测所述第一io口按键在第二时间是否为按下状态,所述第一io口按键为多个所述io口按键中的任意一个io口按键,所述第二时间位于所述第一时间后,且所述第二时间与所述第一时间的间隔时长为所述预设时长;所述处理模块,还用于若确定所述第一io口按键在所述第二时间为按下状态,则判断所述第一io口按键对应的第一计时存储字节内的第一计时数据与预设字节数的大小关系;所述处理模块,还用于若确定所述第一计时数据小于预设字节数,则将所述第一计时数据增加一个预设单位;所述处理模块,还用于恢复所述主程序的执行,并根据所述第一计时数据执行对应的操作。

17、在本技术的第三方面提供了一种电子设备,包括处理器、存储器、用户接口以及网络接口,所述存储器用于存储指令,所述用户接口和所述网络接口均用于与其他设备通信,所述处理器用于执行所述存储器中存储的指令,以使所述电子设备执行如上述任意一项所述的方法。

18、在本技术的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,执行如上述任意一项所述的方法。

19、综上所述,本技术实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:

20、1、通过一个定时中断程序来单独集中处理所有按键的状态读取,减轻了中央处理器的负担。由于不再需要在主程序中不断地轮询每个io口的状态,处理器可以更有效地分配时间给其他任务。这种中断驱动的方法提高了程序的整体效率和响应速度,使得单片机能够更快地响应按键事件,同时保持对其他任务的高效处理。为每个按键配置独立的计时存储字节,使得每个按键的有效按下时间能够通过其对应的计时存储字节数据量化表示。可以精确地跟踪每个按键被按下的持续时间,对于识别短按、长按等不同的按键动作更有效。这种量化方法使得后续处理变得简单明了,便于程序根据不同的计时数据执行相应的操作。去抖动时间靠定时常数确定,有抖动时计时自动清零。这解决了由于按键抖动导致的信号不稳定问题。在定时中断中,只有连续两个预设时长内都检测到按键为按下状态时,才会认为是有效的按键动作,这样就自然地实现了去抖动。这种方法同时提供了一种稳定和可靠的方式来处理按键输入,避免了因为软件去抖导致的cpu资源浪费。提高了单片机的运行效率。

21、2、当检测到第二io口按键在第一时间为非按下状态时,清空第二计时存储字节内的第二计时数据。这样可以避免误判第二io口按键的按下操作,确保只有在第二时间发现第二io口按键为按下状态时才进行计时。通过清空第二计时数据,可以确保第二计时数据只包含有效的按键持续时间。如果第二io口按键在第一时间为非按下状态,意味着在第二时间之前按键已经释放,因此清空第二计时数据可以排除无效的计时结果,保证计时数据的准确性。

22、3、通过持续监测第一io口按键的状态变化,如果在第二时间发现该按键为非按下状态,可以判断该按键发生了无效动作。无效动作可能是因为按键在第一时间短暂按下然后立即释放,或者存在按键抖动等干扰因素导致的误触发。通过判断无效动作,可以排除误触发对后续处理的影响,提高按键操作的准确性。将第一计时存储字节内的第一计时数据清空,可以清除无效动作期间的计时记录。这样可以确保第一计时数据只包含有效的按键持续时间,避免无效动作对计时数据的干扰。

本文地址:https://www.jishuxx.com/zhuanli/20240730/196376.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。