蓝桥杯嵌入式3.2按键消抖+松手检测+长短按学习笔记

背景:之前是将按键扫描代码放在while循环里,但这样会不断的扫描按键,我们可以设置每10MS扫描一次按键,而且如果在第一个10MS扫描到按键被按下,在第二个10MS,甚至第3个10MS也发现按键被按下,我们就可以实现按键的长短按

上述程序为增加程序的可读性,我们用c语言中的枚举

我们使用私有化函数进行按键检测

 

 还需要比上一次多声明两个变量

 

 在主函数中进行功能显示

我们还差每个10MS进行按键扫描,接下来需要用到嘀嗒计时器,打开it.c文件

找到这个函数,这个是嘀嗒计时器,每隔1MS进行一次,所以我们可以设置一个时间变量,让他在10MS时进行一次按键扫描函数

 

记得在it.c文件上面声明新的变量,而且将main.c中的KeyScan()函数再次声明

这样就实现了按键的消抖和松手检测,接下来我们进行长短按功能的实现 ,我们只需要在main.c文件中的while函数进行修改,增加一个之前设置按键按下时间的标志位判断就可以了

这样我们就实现了按下按键1小于700MS打开蜂鸣器,按下按键1大于1200MS打开LED,就实现了按键的长短按

 

 

 

 

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值