key_s1, 未按下時,發現按鍵按下,進入key_s2,否則進入key_s1
key_s2, 有鍵按下,發現按鍵按下,進入key_s3,否則為誤判,進入key_s1
key_s3, 穩定按下發現按鍵按下,繼續key_s3,記數,按鍵抬起進入key_s4
key_s4,確認按鍵抬起,回到初始狀態
enum key_states_e;
void key_scan(gpio_typedef* gpiox,uint16_t gpio_pin)
else
break;
case key_s2:
if(gpio_readinputdatabit(gpiox,gpio_pin) == 1)else
break;
case key_s3:
if(gpio_readinputdatabit(gpiox,gpio_pin) == 1)else
} else
break;
case key_s4:
if(gpio_readinputdatabit(gpiox,gpio_pin) == 0)
break;
default:
key_state = key_s1;
press = 0;
break;
}}
10 5 微控制器長短按鍵的應用
在微控制器系統中應用按鍵的時候,如果只需要按下一次按鍵加 1 或減 1,那用第 8 章學到的知識就可以完成了,但如果想連續加很多數字的時候,要一次次按下這個按鍵確實有點不方便,這時我們會希望一直按住按鍵,數字就自動持續增加或減小,這就是所謂的長短按鍵應用。當檢測到乙個按鍵產生按下動作後,馬上執行一次...
10 5 微控制器長短按鍵的應用
在微控制器系統中應用按鍵的時候,如果只需要按下一次按鍵加 1 或減 1,那用第 8 章學到的知識就可以完成了,但如果想連續加很多數字的時候,要一次次按下這個按鍵確實有點不方便,這時我們會希望一直按住按鍵,數字就自動持續增加或減小,這就是所謂的長短按鍵應用。當檢測到乙個按鍵產生按下動作後,馬上執行一次...
微控制器按鍵長短按得識別原理
stm32f103 按鍵長短按得識別原理 需要乙個定時器,用來計算按鍵按下的時間,可以一秒鐘檢測100次,設定初始化為10ms的中斷,比如使用定時4作為按鍵時間計算的定時器 比如我們需要4種模式,輕觸,短按,長按,超級長按 define clicktypetouch 1 輕觸 define clic...