本帖最后由 robinsonlin 于 2021-4-8 13:54 編輯
1,在1ms定時器中斷里面建一個 unsigned long SysTick++;
2,當檢測到按鍵響應時,變量TKey = SysTick,采集此時的系統時鐘,同時KeyCount變量+1;
3,在SysTick - Tkey<=1500時,如果還有按鍵響應,就KeyCount++;
4,當SysTick - TKey>1500時,執行switch(KeyCount), break后KeyCount變量清零。
附長短周期判斷,長短周期判斷,實際是檢測按鍵的連續性, 需要再加一個10ms的定時器做按鍵判斷。在10ms定時器中,設定按鍵檢測標志,并記錄SysTick,如按下時,TFlag = 1; KeyDelay = SysTick;這個操作記得加鎖,只執行一次。 當檢測到按鍵彈起,TFlag = 0; 然后判斷 SysTick - KeyDelay是否大于500,如果大于就是長按鍵,KeyCount += 10;如果SysTick - KeyDelay小于500ms,就是短按鍵,KeyCount ++ ; KeyCount 十位就是長按次數,個位是短按次數。 SysTick - Tkey > 1500時,記得清理keyCount。
|