按键不用死循环等待的松手检测方法
按键不用死循环等待的松手检测方法
一般传统的松手检测都是用一个while死循环等待松手的,一直按着按钮的时候其他的程序是停住不跑的,占着cpu的资源就是所谓占着茅坑不拉屎。下面分享的这个方法就是可以不用死循环等待,该跑的代码还是继续跑但是又实现了松手检测的功能。非常实用。
short flag = 0;
void Scan_key()
{
if (key != 0) // 按键没有按下的时候
{
flag = 0; // 标志位清零
}
if (key == 0) // 按键按下
{
HAL_Delay(10);
if (key == 0) // 消除抖动后再次判断按键是否按下
{
// 如果按键没有一直按着就执行 如果标志位为1说明还没有松手
if (flag == 0)
{
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_15); // 电平翻转
}
flag = 1; // 将标志位置1锁住 表示已经按下
}
}
}
本文作者:大海&
本文链接:https://www.cnblogs.com/oceanus/p/13355461.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步