前言
stm32系列是最常用的單片機之一,不同的版本對應除了引腳、外設、頻率、容量等’不同之外,其開發的方法是一樣的。
本章講解使用GPIO引腳功能驅動LED燈和接收Key按鈕輸入。
先來筆者根據自己使用的開發板的電路來使用GPIO進行LED操作,下圖是筆者使用的開發板LED燈的電路圖:
引腳PD6接LED1,PD12接LED2,PD13接LED3,電阻是限流電阻(計算方式高電平減去LED1的壓降,然后除以LED能流過的電流)。
復制模版文件,更改名字為LEDtest1,啟動軟件Keil4,打開改名后的工程LEDtest1。
在工程目錄下新建文件夾Dev,在Dev下新建文件夾LED,在LED下新建led.c和led.h文件,然后將路徑以及文件部署進去:
部署成功后,我們工程如下:
然后開始編寫程序,mian.c,led.c, led.h,編寫好后的程序內容如下:
程序主要邏輯如下:打開LED1,延遲,打開LED2,延遲,打開LED3,延遲,關閉LED1 LED2 LED3,延遲,回頭循環開始。
CSDN下載地址:https://download.csdn.net/detail/qq21497936/7998805
QQ群免費下載:1047134658(點擊“文件”搜索“LEDtest1”,群內與博文同步更新)
現在我們來使用GPIO進行按鍵操作,按鍵最為常用的輸入,大多數以及筆者接觸到的經驗人士都是建議筆者采用輪詢(查詢)方式。下圖是筆者開發板的按鍵部分的電路圖:
從電路圖分析PE0,PE1,PE2,PE3,PE4這5個引腳未按鍵時是帶有上拉電阻的高電平,按鍵時有2個10K的電阻進行分壓,為1.65V查看芯片電平的電氣特性,你會發現低於高電平最低的電壓,輸入盡管有電壓但仍然是低電平,PC13則只有上拉電阻,至於為什么會這樣筆者暫時也不太清楚,那么我們復制LEDtest1的工程,改名為KEYtest1,然后繼續開始按鍵編寫,還是按照流程來,在Dev文件夾下建立KEY文件夾,在KEY文件夾下建立key.h,key.c兩個文件都部署進工程,路徑包括進去。
我們繼續來使用幫助文檔進行參考,版本是V3.5(若未指明V3.4則是V3.5,建議使用文檔的時候兩個版本的都備好),打開下面這個源文件
我們想象一下,與LEDtest1的GPIO配置為輸出,那么按鍵要配置成輸入,配置成什么輸入呢(大家可以參考八種IO模式),這里我們為初學者考慮,盡量只依靠幫助文檔,所以我們繼續使用幫助文檔來編寫,配置成輸入也有一個初始化,於是在源代碼中我們查找,看下圖
00067行是對按鈕進行初始化,我們點擊這個函數跳轉到源代碼
再點擊255查看源代碼
00257大家都知道,00258則是配置中斷的詳細信息(怎么樣才產生中斷),00259則是將中斷與中斷向量聯系起來(可以配置優先級和中斷響應函數),我們不使用中斷不管后面中斷這兩行,繼續往下走
00265這是配置成浮空輸入,我們想這應該是我們想要的(不管對錯,暫時先這樣),繼續往下走
00316這個讀輸入數據的位,我們點開,以轉到它的說明
這樣我們知道它主要是用來判斷哪個端口的哪個引腳現在的值,輸入的值不是0就是1,可以寫檢測代碼了,繼續寫代碼,寫完的代碼如下:
調試運行成功。並且筆者在GPIO的模式上,配置了上拉,下拉,浮空輸入,都運行正常,包括UESR按鍵也正常。
CSDN下載地址:https://download.csdn.net/detail/qq21497936/7998809
QQ群免費下載:1047134658(點擊“文件”搜索“KEYtest1”,群內與博文同步更新)
上一篇:《stm32開發筆記(二):stm32系列使用V3.5固件庫的幫助文件以及GPIO基本功能》
下一篇:敬請期待…