▼點(diǎn)擊下方名片,關(guān)注公眾號
▼一、如何進(jìn)行按鍵檢測
檢測按鍵有中斷方式和GPIO查詢方式兩種。推薦大家用GPIO查詢方式。
1.從裸機(jī)的角度分析
- 中斷方式:中斷方式可以快速地檢測到按鍵按下,并執(zhí)行相應(yīng)的按鍵程序,但實(shí)際情況是由于按鍵的機(jī)械抖動(dòng)特性,在程序進(jìn)入中斷后必須進(jìn)行濾波處理才能判定是否有效的按鍵事件。如果每個(gè)按鍵都是獨(dú)立的接一個(gè) IO 引腳,需要我們給每個(gè) IO 都設(shè)置一個(gè)中斷,程序中過多的中斷會(huì)影響系統(tǒng)的穩(wěn)定性。中斷方式跨平臺(tái)移植困難。
- 查詢方式:查詢方式有一個(gè)最大的缺點(diǎn)就是需要程序定期的去執(zhí)行查詢,耗費(fèi)一定的系統(tǒng)資源。實(shí)際上耗費(fèi)不了多大的系統(tǒng)資源,因?yàn)檫@種查詢方式也只是查詢按鍵是否按下,按鍵事件的執(zhí)行還是在主程序里面實(shí)現(xiàn)。
2.從OS的角度分析
- 中斷方式:在 OS 中要盡可能少用中斷方式,因?yàn)樵赗TOS中過多的使用中斷會(huì)影響系統(tǒng)的穩(wěn)定性和可預(yù)見性。只有比較重要的事件處理需要用中斷的方式。
- 查詢方式:對于用戶按鍵推薦使用這種查詢方式來實(shí)現(xiàn),現(xiàn)在的OS基本都帶有CPU利用率的功能,這個(gè)按鍵FIFO占用的還是很小的,基本都在1%以下。
二、最簡單的按鍵檢測程序
先給他說了一種經(jīng)典的
按鍵檢測代碼,相信大多數(shù)人使用按鍵
函數(shù)都見過它,很簡單就不過多介紹了!
#define?KEY0_PRES?1??//KEY0??
#define?KEY1_PRES?2??//KEY1?
#define?WKUP_PRES?3??//WK_UP?
u8?KEY_Scan(u8?mode)
{??
?static?u8?key_up=1;//按鍵按松開標(biāo)志
?if(mode)key_up=1;??//支持連按????
?if(key_up