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)2326272829}
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...