一直忙的顧頭不顧腚的,今天終於可以抽出一點時間了,繼續我們未完的約定~
依稀記得上大學那會可親的老師教授鍵盤檢測要防抖,講述了防抖原因並給出了精心準備的例子。作爲一個呆傢伙,我居然真用這種編程方法參加了工作.......
你也許在想:是啊,是這麼教的呀,書上也是這麼寫的呀,有問題?沒有問題,但你有沒有想過,這10ms實際上對單片機是一種巨大的浪費,當程序需要同時運行多個需求的時候會捉襟見肘。下面我們就進入本章重點:時間片機制,拒絕死等!
1. 配置好250us中斷,1ms計時。注意變量SpeedCon_Num。
2. main函數中構建while(1)主循環。主循環裏同時運行了多個任務:按鍵掃描、LED閃爍、睡眠計時、睡眠檢測等。每8ms爲一輪,輪流調用每個函數。注意變量SpeedCon_Num。
3. 編寫按鍵掃描程序。仔細看看會發現這種按鍵掃描根本沒有“死等10ms”,而是採用變量計時,每8ms掃描一次按鍵,防抖24ms,滿足條件則確認按鍵觸發。這段按鍵掃描代碼所耗費的時間不會超過50us。
綜上,採用時間片機制後大大減少了單片機的空轉,提高了利用率,能對外界做出更快更好的響應。小小拋磚引玉,等你來戰哦~