1608|2

664

帖子

104

TA的资源

纯净的硅(中级)

楼主
 

【平头哥RVB2601开发板试用体验】五、按键中断测试 [复制链接]

  本帖最后由 gs001588 于 2022-6-30 02:36 编辑

五、按键中断测试

 

    RVB2601开发板上有KEY1、KEY2两个按键可供用户使用,使用IO按键消抖是必不可少的。见有些朋友反馈板上中断检测按键时容易误触发,那么不妨咱也消个抖,使用操作系统延时“aos_msleep()”不占用太多时间。

 

    一、参考说明

    本贴工程参考样例工程“ch2601_helloworld”,在此基础上添加按键中断和消抖算法来实现。

 

    二、硬件原理

    从RVB2601原理图可知,按键KEY1、KEY2都接有上拉电阻,按键按下时与GND导通,使GPIO检测输入为低电平“0”;按键释放后,GPIO检测输入为高电平“1”。

 

 

    三、程序实现代码及说明。

    程序比较简单。首先添加两个头文件“gpio_pin.h”、“gpio.h”;接着声明按键初始化函数“key_init()”;定义IO按键“key1”,“key2”;定义按键事件全局变量。

 

    按键初始化。首先初始化key1到PA11;注册中断回调函数,绑定按键中断服务;设置为输入上拉模式;设置下降沿中断;使能开启按键中断。同理设置key2。

 

    中断服务函数。首先定义并初始化按下、抬起状态计数变量为0;for循环周期为10ms,检测按键IO的状态,并对状态计数;10次循环结束判断按下状态多,还是抬起状态多,如果按下状态多,那么置按键事件变量为1。虽然是在中断服务函数中做的消抖,但是因为使用了“aos_msleep()”做延时,应该不会占用系统太多时间片。这里有一点没有去详细研究,就是在消抖过程中,如果两次有中断到来,是否还会重复进入中断服务函数,还是会忽略?不过此程序,即便会再次进入,那么也不影响,会按最后一次进入重新开始对按下、抬起状态进行计数,不会影响程序执行效果。

 

    在main()主函数中添加调用按键初始化函数。在主循环中每间隔50ms检测一次是否有按键事件,如有按键事件则打印输出;没有则忽略。

    至此,按键中断测试程序代码已实现。

    

    四、运行程序,观察串口打印结果。

    下载,并全速运行程序后,可看到串口打印信息如下。

 

    五、附上工程源码。

main.c (2.11 KB, 下载次数: 1)



 

最新回复

要是长按1秒钟,再松开,松开的时候有机率误触发了按下中断事件,也就防不住了,因为用户只按了1次,但是输出两个app key1 down!     详情 回复 发表于 2022-6-30 13:39
点赞 关注
 
 

回复
举报

53

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

要是长按1秒钟,再松开,松开的时候有机率误触发了按下中断事件,也就防不住了,因为用户只按了1次,但是输出两个app key1 down!

 

点评

现在这个去抖,长按松开应该不会有问题;现在的隐患是按的时间长,中途按累了,没按住抖一下。 当然还可以双沿去抖。硬件抖动单纯靠软件去抖,没有百分非完美的去抖  详情 回复 发表于 2022-6-30 16:06
 
 
 

回复

664

帖子

104

TA的资源

纯净的硅(中级)

板凳
 
乘简 发表于 2022-6-30 13:39 要是长按1秒钟,再松开,松开的时候有机率误触发了按下中断事件,也就防不住了,因为用户只按了1次,但是输 ...

现在这个去抖,长按松开应该不会有问题;现在的隐患是按的时间长,中途按累了,没按住抖一下。

当然还可以双沿去抖。硬件抖动单纯靠软件去抖,没有百分非完美的去抖

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表