按键不用死循环等待的松手检测方法
按键不用死循环等待的松手检测方法
一般传统的松手检测都是用一个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
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。