stm32開發筆記(三):stm32系列的GPIO基本功能之輸出驅動LED燈、輸入按鍵KEY以及Demo

紅胖子(紅模仿)發表於2021-05-24

前言

  stm32系列是最常用的微控制器之一,不同的版本對應除了引腳、外設、頻率、容量等’不同之外,其開發的方法是一樣的。
  本章講解使用GPIO引腳功能驅動LED燈和接收Key按鈕輸入。

 

STM32系列GPIO驅動LED燈

  先來筆者根據自己使用的開發板的電路來使用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,延遲,回頭迴圈開始。

 

LED的工程程式碼在CSDN下載

  CSDN下載地址:https://download.csdn.net/detail/qq21497936/7998805
  QQ群免費下載:1047134658(點選“檔案”搜尋“LEDtest1”,群內與博文同步更新)

 

STM32系列GPIO檢測按鍵KEY

現在我們來使用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按鍵也正常。

KEY的工程程式碼下載

  CSDN下載地址:https://download.csdn.net/detail/qq21497936/7998809
  QQ群免費下載:1047134658(點選“檔案”搜尋“KEYtest1”,群內與博文同步更新)

 

相關文章