簡單地用狀態機寫的按鍵檢測

2021-08-21 08:27:32 字數 703 閱讀 3632

在csdn上寫的第一篇文章,,,,

之前就聽說過狀態機,但並沒有感覺到其比普通按鍵的優越之處。

接觸了實時作業系統之後,才領悟到這種按鍵檢測方法可以很好地利用cpu的資源(或者說不用實時作業系統時更體現優越性)

這裡直接貼上按鍵檢測的**了(按鍵、led初始化、ucos系統就不贅述了)

程式是stm32f103的,不過和晶元型別關係不大

void key0_task(void *pdata);}

enum key0_states_e

;void key0_scan(void)

break;

case key_s2:

else

key0_state = key_s1;

}break;

case key_s3:

else

}break;

case key_s4:

else

led0=!led0;

press0=0;

key0_state=key_s1;

}break;

}}

程式實現的功能:按鍵按下2s以內,led0反轉;2s以上,led1和led0都反轉

多說一句,10ms的消抖檢測真的是最合適的,lz之前沒寫那句delay_ms(5),結果用按鍵控制各種不靈。

初寫文章,希望大佬們多多批評指正。

微控制器按鍵檢測,狀態機編寫

include include define key1 rb5 define key state 0 0 define key state 1 1 define key state 2 2 int key number 0 unsigned char read key void else key s...

按鍵的程式設計 狀態機1

現在的大學教育就是這樣。學無法致用。狀態機第一次見的時候是在數電裡面,那個時候是研究數位電路 比如鎖存器 用到的。不過由於是自學的,所以早就忘的一塌糊塗了。沒上完大學的人就是這樣啊。不過狀態機同樣在硬體的程式設計中得到廣泛使用。第一次見到狀態機的程式設計,就是在按鍵的程式設計中 馬潮老師的書 後來覺...

基於狀態機的按鍵程式

基於狀態機的按鍵程式 一般的按鍵輸入軟體介面程式非常簡單,在程式中一旦檢測到按鍵輸入口為低電平 有時可能為高 便採用軟體延時的方法來進行消抖,然後再次檢測按鍵輸入,如果再次確認為低電平則表示有按鍵按下,轉入執行按鍵處理程式。如果延時後檢測的電平為高電平則放棄本次按鍵檢測,重新開始一次按鍵檢測過程。在...