M4 按鍵識別

2022-08-31 07:51:09 字數 1468 閱讀 9577

1.相應埠時鐘使能

2.配置gpio為輸入模式

3.根據實際電路圖 配置浮空輸入,不用上下拉

1. 判斷相關的管腳是否為有效電平

2. 如果為有效電平,則進行消抖處理,如延時消抖(5~10ms)

3. 再次判斷是否為有效電平.如果為有效電平,則確實是按鍵按下了,而不是干擾.

4. 識別到後做按鍵處理

5. 等待按鍵釋放

1

//延時消抖23

//返回鍵值

45 u8 key_scanf(void)6

72627while(key1); //

等待按鍵釋放

2829}30

31return

key;

3233 }

以上按鍵識別方式會導致效率低下:

1.  等待按鍵釋放的過程,cpu什麼都做不了,在這死等會導致效率較低;

2.  當識別到有效電平後延時消抖動過程中,cpu也什麼都做不了,會導致效率低下。

做乙個標記。當這個標記為1的時候允許做按鍵識別。一旦識別到按鍵,則將這個標誌清零。當作按鍵識別的時候發現按鍵是釋放的,則又允許識別按鍵(將標誌置1)。

1 u8 key_scanf(void)2

326272829}

3031

else

if(!key1) //

按鍵被釋放

3233

3839

return

key;

4041 }

(3)三次識別比較法

3次識別,如果識別到都是有效電平,認為按鍵有被按下,如果識別過程中其中某次識別到的是無效電平,立即重新開始識別。

最有高效的方法

1

按鍵識別:三次識別比較方式23

//返回值: 按鍵鍵值

45 u8 key_scanf(void)6

74445else

if(!key2) //

確定是否真的被按下

4647

5253

else

if(!key3)

5455

6061

else

if(!key4)

6263

6869

if(key_count==3) //

識別了三次

7071

8485

}

8687}88

89else

if(!key1 && key2 && key3 && key4)//

所有的按鍵都被釋放時,

9091

9899

return key; //

返回鍵值

100101 }

公升級鎂光M4固態硬碟的韌體

俺的mac mini的m4固態硬碟的韌體公升級完成,之前宕機的問題很可能得到解決。使用u盤按照中的步驟完成的。但開機後出現 could not find kernel image memdisk 的錯誤提示。解決的方法是將 boot isolinux 目錄中的 memdisk.檔案的檔名最後乙個點去...

關於 m4 文字處理引擎

使用 m4 開源專案還是挺多的,之前看到都有的怕怕的,選擇自動略過。今天鼓起勇氣來學習一波。首先 m4 processor 是乙個 巨集定義 處理器,也就是說,他是乙個純粹的文字處理器,幹些管理模板,使用模板來進行文字替換的活。m4 的應用灰常廣泛,只是我們很少關注它的存在罷了。為什麼你會經常看到 ...

M4 是乙個巨集處理器

m4的內容 m4 是乙個巨集處理器.將輸入拷貝到輸出,同時將巨集展開.巨集可以是內嵌的也可以是使用者定義的.除了可以展開巨集,m4還有一些內建的函式,用來引用檔案,執行unix命令,整數運算,文字操作,迴圈等.m4既可以作為編譯器的前端也可以單獨作為乙個巨集處理器.安裝下列程式 m4 簡短說明 m4...