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