GD32F427/F407領航者開發(fā)板學習教程—11 按鍵實驗

????大家好,我是凌智君。
????之前的幾節(jié)課一直介紹單片機GPIO輸出功能的使用,這節(jié)課介紹一下輸入功能的使用,單片機的GPIO不僅有輸出功能,還有輸入功能,這里通過使用按鍵,控制輸入信號,每當按下一下按鍵都會輸入一個不同的信號,單片機通過判斷是否有這個信號輸入來判斷按鍵是否按下,廢話不多說了,直接結合硬件看軟件。
????一、實驗目的:
????如何配置單片機實現GPIO的輸入功能。
????二、實驗現象:
????下載程序后復位開發(fā)板,按鍵 KEY1 按下,LED3 亮,松開按鍵 KEY1,LED3 滅。
????三、實驗原理
????問題1:什么是按鍵?
????原因:按鍵有很多類型,有機械按鍵,也有微動按鍵,領航者開發(fā)板用的是機械式按鍵,旗艦開發(fā)板用的微動按鍵,按鍵的原理很簡單,按鍵按下,兩側導通,按鍵松開,兩側斷開。


? ? 問題2:按鍵的電路原理是什么?
????原因:如圖所示,KEY1接口連接到單片機的GPIO引腳,通過10K電阻對其上拉,在這種情況下,單片機引腳一直是高電平,單片機讀取的電平一直是高電平,當按鍵KEY1按下的時候,單片機引腳直接連接到了GND,所以此時單片機讀取的電平是低電平,這樣就會有有一個電平的變化。

????問題3:程序是如何實現的?
? ? 原因:首先對引腳進行初始化,將引腳初始化為輸入模式,這里對四個按鍵都進行了初始化,對應的函數在KEY.c文件。
????在KEY.h文件里面聲明一下函數和變量,方便外部調用,在LED的時候,宏定義是設置引腳高低電平,屬于輸出,在按鍵KEY,宏定義是讀取引腳電平,屬于輸入,注意兩個函數的區(qū)別。
????在系統(tǒng)初始化函數和執(zhí)行函數里面調用一下,實現實驗效果。
????這里按鍵需要一個消抖,基本是這樣的,先判斷按鍵是否按鍵,延時一段時間,再判斷一次,如果兩次都成功了,那么確實是按下了,如果只有一次,那么就是異常信號導致的,或者按鍵沒按到位,這樣可以有效的進行消抖。
????按鍵KEY的程序這里就列出來了,LED相關的程序和之前教程介紹的一樣,這里就不再贅述了,將程序下載到開發(fā)板內,然后復位開發(fā)板就可以實現實驗效果了。
配套視頻鏈接:
待更新
開發(fā)板鏈接:
https://item.taobao.com/item.htm?spm=a230r.1.14.23.711d35176CsxjD&id=694056890543&ns=1&abbucket=15#detail
公眾號:

凌智君:
YunXiang_TechShare
(添加V,有相關技術交流群)