野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5633|回复: 6

请教一个按键循环问题

[复制链接]
发表于 2022-9-5 21:58:12 | 显示全部楼层 |阅读模式
while循环不是条件判断为真时,就会一直循环里面的内容么,但是我按住按键发现没有反应

怎么改才能够按下按键一直执行里面的内容
野火论坛202209052156155420..png
野火论坛202209052155575777..png
回复

使用道具 举报

发表于 2022-9-6 09:42:13 | 显示全部楼层
按键的初始化配置是怎样的,可以测试下,按键按下的时候,电平信号有没有改变
回复 支持 反对

使用道具 举报

发表于 2022-9-6 12:20:25 | 显示全部楼层
因为你在按键处理扫描里面一直等待释放,如果不释放就不会执行到你的while判断里。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-7 16:48:12 | 显示全部楼层
LF_laffy 发表于 2022-9-6 09:42
按键的初始化配置是怎样的,可以测试下,按键按下的时候,电平信号有没有改变 ...

按住松开后是有改变的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-7 16:53:06 | 显示全部楼层
羊烊 发表于 2022-9-6 12:20
因为你在按键处理扫描里面一直等待释放,如果不释放就不会执行到你的while判断里。 ...

请问下咋改才能执行到while里面
回复 支持 反对

使用道具 举报

发表于 2022-9-7 17:54:22 | 显示全部楼层
要修改KEY_Scan程序的代码,这个例程要求必须释放后才确认按键被按下过,
最简单的修改方法是:直接去掉KEY_Scan代码中的while这一行(等待按键释放);
保守一点的方法是延时10ms,再判断按键还是处于按下状态就赋值返回值为key_on即可:
HAL_delay(10);
if(KEY_Scan(GPIOx,GPIO_PIN)==key_on)
{
  return key_on;
}
....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-7 19:51:21 | 显示全部楼层
羊烊 发表于 2022-9-7 17:54
要修改KEY_Scan程序的代码,这个例程要求必须释放后才确认按键被按下过,
最简单的修改方法是:直接去掉KEY ...

哦哦,理解了,多谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 21:10 , Processed in 0.030349 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表