STM32標準庫教程(第二節2.1)

晶片型號:STM32f103c8t6

STM32標準庫教程(第二節2.1)

GPIO的使用

一:系統結構

STM32標準庫教程(第二節2.1)

由圖可見,所有GPIO,均在橋接1上(APB2),所以使用開發板上任何IO口都需要開啟APB2的時鐘。

二:GPIO輸入輸出模式

GPIO埠的每個位可以由軟體分別配置成多種模式。

─ 輸入浮空

─ 輸入上拉

─ 輸入下拉

─ 模擬輸入

─ 開漏輸出

─ 推輓式輸出

─ 推輓式複用功能

─ 開漏複用功能

主要介紹輸入下拉,輸入上拉,推輓式輸出。

一:推輓式輸出

推輓輸出就是微控制器引腳可以直接輸出高低電平。低電平時接地,高電平時輸出微控制器電源電壓。這種方式可以不接上拉電阻。但如果輸出端接地的話,這個時候輸出高電平可能引發微控制器執行不穩定,甚至可能燒壞引腳。

第一節中點亮板子上的LED燈就是推輓式輸出的一個例子

本節我們使用外接裝置進行實驗。

1:複製上一節的0-demo檔案,重新命名為gpio,

STM32標準庫教程(第二節2.1)

2:在HARDWARE資料夾中新建一個資料夾命名為gpio,並把資料夾裡的LED.c和LED.h複製到gpio資料夾中。

STM32標準庫教程(第二節2.1)

3:將LED.c和LED.h從新命名為gpio.c和gpio.h。

STM32標準庫教程(第二節2.1)

注:上面之所以為gpio建立資料夾是為了以後用更好地移植,(在其他工程中直接複製此資料夾修改需要的引數),大大減少了工作量。

4:之後開啟USER資料夾裡面的工程檔案,將gpio新增到我們的路徑中。

STM32標準庫教程(第二節2.1)

5:將gpio.c檔案新增到工程中。(這步在上一節介紹過,不重複了。)

STM32標準庫教程(第二節2.1)

6:把修改對應引數#include "gpio.h" ,編譯一下工程,此時會出錯,因為下面的LED_Init函式我們在LED.c檔案中定義過了,所以我們需要修改gpio.h從新定義一個gpio初始化函式。

STM32標準庫教程(第二節2.1)

7:修改gpio.h檔案中引數,注意看註釋。

STM32標準庫教程(第二節2.1)

8:修改gpio.c檔案中引數,注意看註釋。

STM32標準庫教程(第二節2.1)

注:開啟我們韌體庫使用手冊,找到gpio這一節,可看到gpio口可以配置為這些種模式,選擇我們需要的就可以。

STM32標準庫教程(第二節2.1)

9:主函式修改相應引數,編譯,編譯成功。下載到開發板。(操作步驟請看上一節)。

STM32標準庫教程(第二節2.1)

10:接線,PB12--LED小燈長腳(LED正極),開發板GND--LED斷腳(LED負極),效果如圖。我們串聯了限流電阻。

STM32標準庫教程(第二節2.1)

STM32標準庫教程(第二節2.1)

11:引入延時函式。系統自帶的延時函式很精準。編譯通過後下載,led閃爍。

STM32標準庫教程(第二節2.1)

一些騷操作

:開啟程式碼提示功能。單擊圖中的扳手,選擇text completion,按照圖中設定。

STM32標準庫教程(第二節2.1)

STM32標準庫教程(第二節2.1)

這時我們返回主函式,我們只需要敲少量程式碼就可以自動獲得系統中所帶的函式,或以定義的變數,

STM32標準庫教程(第二節2.1)

教程更新完之後所有原始碼,及相關檔案,都會上傳到百度雲,歡迎大家關注點贊。

(黑龍江科技大學-機器人協會)