前言
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基本功能》
下一篇:敬請期待…