按鍵不用死循環等待的松手檢測方法
一般傳統的松手檢測都是用一個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鎖住 表示已經按下
}
}
}