五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

STM32按鍵狀態(tài)機3——增加雙擊與功能優(yōu)化

2022-08-07 22:55 作者:碼農(nóng)愛學習-B站  | 我要投稿

上篇文章,介紹了將按鍵檢測增加長按功能,并將按下抖動與松開抖動共用一個抖動狀態(tài)來表示,其狀態(tài)圖如下:

仔細研究這個狀態(tài)圖,其它還存在一些問題:

  • 短按狀態(tài),只要按下去,不需要等按鍵再釋放,就會觸發(fā)短按事件。對于需要按下再松開作為一次短按的應用來說,此狀態(tài)圖也不滿足需求

  • 長按狀態(tài),必須先經(jīng)過短按狀態(tài),即長按按鍵,會先觸發(fā)一個短按,再觸發(fā)一個長按。如果實際應用中需要分別使用短按和長按,則此狀態(tài)圖不滿足要求

本篇,就來解決上述兩個問題,并再增加一個按鍵雙擊檢測,實現(xiàn)一個功能更全面的按鍵檢測。


1 增加雙擊檢測

增加一個雙擊檢測,需要增加兩個狀態(tài):

  • 等待再次按下

  • 確認第2次按下

同時,之前的“短按狀態(tài)”和“長按狀態(tài)”分別改為“確認按下”和“確認長按”。

1.1 狀態(tài)圖修改

修改后的狀態(tài)圖如下,有以下幾點需要注意: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

  • 確認按下”不是短按觸發(fā)的條件,需要等松開后,經(jīng)消抖進入到“等待再次按下”一段時間后(200ms),沒有再次被按下,才觸發(fā)短按事件,這樣就解決了本篇開頭提到的第1個問題

  • 確認按下”不是短按觸發(fā)的條件,另一個用途是,當此狀態(tài)繼續(xù)保持按下狀態(tài)一段時間后(1s),則會單獨觸發(fā)長按事件,同時進入到“確認長按”狀態(tài),這樣就解決了本篇開頭提到的第2個問題

  • 對于雙擊事件的檢測,首先按下按鍵進入“確認按下”狀態(tài),然后在1s內(nèi)松開進入“等待再次按下”狀態(tài),接著在200ms內(nèi)再次按下進入“確認第2次按下”狀態(tài),然后在1s內(nèi)松開,即可觸發(fā)雙擊事件,并同時進入“穩(wěn)定松開”狀態(tài)

  • 注意,在“確認第2次按下”狀態(tài)下,如果在1s內(nèi)沒有松開,也會進入到“確認長按”狀態(tài)

1.2 程序編寫

根據(jù)狀態(tài)圖,修改對應的狀態(tài)機邏輯,修改后的代碼如下:

最后注釋掉的一句是調(diào)試打印,調(diào)試時可打開,方便觀察狀態(tài)變化

1.3 測試

短按、長按、雙擊的測試結(jié)果如下:

還有從確認第2次按下狀態(tài)到達的長按狀態(tài):



2 功能優(yōu)化

上面的代碼實現(xiàn),是在主函數(shù)中,每50ms延時執(zhí)行一次狀態(tài)機循環(huán)(主函數(shù)代碼如下),僅用做演示按鍵狀態(tài)機的運行機制。

實際開發(fā)中,按鍵檢測程序,應該作為一個獨立的模塊運行,當檢測到某一按鍵狀態(tài)觸發(fā)時,通知應用程序來使用。

對于stm32裸機開發(fā)來說,可以將按鍵狀態(tài)機放到一個定時器中斷服務函數(shù)中運行,當檢測到某一按鍵狀態(tài)觸發(fā)后,通知應用程序:


3 總結(jié)

本篇在前兩篇按鍵狀態(tài)機的基礎上,繼續(xù)介紹增加按鍵的雙擊功能,并解決之前狀態(tài)存在的兩個問題,通過實測驗證,演示短按、長按、雙擊的使用效果。最后對代碼結(jié)構(gòu)進行優(yōu)化,使其更符合實際開發(fā)應用。



STM32按鍵狀態(tài)機3——增加雙擊與功能優(yōu)化的評論 (共 條)

分享到微博請遵守國家法律
安顺市| 宜丰县| 剑阁县| 天全县| 泰安市| 临沧市| 闵行区| 进贤县| 嘉禾县| 绍兴县| 龙南县| 慈溪市| 曲沃县| 长海县| 民权县| 盐亭县| 北辰区| 盘山县| 武胜县| 永靖县| 喀喇沁旗| 蓬莱市| 衡南县| 汾阳市| 湖南省| 元氏县| 星座| 龙胜| 玉溪市| 工布江达县| 杭锦后旗| 巴林左旗| 闻喜县| 扎囊县| 京山县| 尤溪县| 乌恰县| 修武县| 定襄县| 资溪县| 四子王旗|