按鍵不用死循環等待的松手檢測方法


按鍵不用死循環等待的松手檢測方法

一般傳統的松手檢測都是用一個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鎖住 表示已經按下
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM