STM32八種GPIO模式理解

2021-09-24 00:15:06 字數 2231 閱讀 2945

時隔好久,決定將stm32重新複習一遍,然後轉向linux。

話不多說下面就是開始正文

上手stm32第一步就是得會配置工程

配置工程的教程有很多,就不多做筆記了,就列舉一下初學過程中比較容易弄錯的地方

在stm32的工程庫中 stm32f10x_rcc.c 是必須要加的

在define中use_stdperiph_driver,stm32f10x_hd 裡面是英文符號的逗號 不是點

我覺得最好將 use microlib勾選,不然初學會出現一些問題(曾使用printf重定向時沒有勾選,然後程式執行著就卡住了,困擾了我半天)

然後就是測設工程是否建立成功。

我的測試**如下

#include "stm32f10x.h"

int main()

}

gpio有八種輸入輸出方式:

浮空輸入 gpio_mode_in_floating

上拉gpio_mode_ipu

下拉gpio_mode_ipd

模擬輸入 gpio_mode_ain

開漏輸出gpio_mode_af_od

開漏復用gpio_mode_af_od

推挽式輸出gpio_mode_out_pp

推挽式復用功能gpio_mode_af_pp

stm32 i/o口電路如圖 輸入驅動器的主要元件是ttl施密特(肖特基)觸發器。這個觸發器的主要作用是:設定電壓閾值,超過/低於該電壓,才可通過。

(1)浮空輸入:

外部的電平訊號通過左邊編號1的i/o埠進入stm32,經過編號2的施密特觸發器的整形送入編號3的「輸入資料暫存器」,在「輸入資料暫存器」的另一端,cpu可以隨時讀出i/o埠的電平狀態。

適用場合:按鍵檢測 串列埠rx1

(2)上拉輸入

跟浮空輸入模式不同的是上拉輸入僅僅是在資料通道上部,接入了乙個上拉電阻,並接到裝置電壓(vdd)。根據stm32的資料手冊,這個上拉電阻阻值介於30k~50k歐姆。同樣,cpu可以隨時在「輸入資料暫存器」的另一端,讀出i/o埠的電平狀態。

該輸入模式中,上拉電阻的目的是為了保證在無訊號輸入時io口的電平為高電平。同時,當訊號輸入為低電平時,io口的電平應該也為低電平。如果沒有上拉電阻,在沒有外界輸入的情況下輸入端是懸空的,它的電平是未知的無法保證的,上拉電阻就是為了保證無訊號輸入時輸入端的電平為高電平。同樣還有下拉電阻它是為了保證無訊號輸入時輸入端的電平為低電平。

適用場合:

(3)下拉輸入

資料通道的下部,接入了乙個下拉電阻,並接到電路共地端(vss)。根據stm32的資料手冊,這個下拉電阻阻值也是介於30k~50k歐姆。

適用場合:

(4)模擬輸入

模擬通道輸入的配置則更加簡單,訊號從左邊的埠進入,從右邊的一端直接進入adc模組。 

這裡看到所有的上拉、下拉電阻和施密特觸發器,均處於斷開狀態,因此「輸入資料暫存器」將不能反映埠上的電平狀態,也就是說,模擬輸入配置下,cpu不能在「輸入資料暫存器」上讀到有效的資料。這也是為什麼我們在選擇adc採集時,不能通過直接讀取gpio輸入資料暫存器來獲得模擬電壓值。而是必須讀取adc資料暫存器的值。

適用場合:應用adc模擬輸入,或者低功耗下省電 

STM32的八種GPIO模式

stm32有八種io口模式,分別是 模擬輸入 浮空輸入 上拉輸入 下拉輸入 開漏輸出 推挽輸出 復用開漏輸出和復用推挽輸出。1 模擬輸入 gpio mode ain模擬輸入,即關閉施密特觸發器,將電壓訊號傳送到片上外設模組 不接上下拉電阻 2 浮空輸入 gpio mode in floating浮空...

STM32基礎學習 八種GPIO模式總結

八種io模式再現 1 gpio mode ain模擬輸入 2 gpio mode in floating浮空輸入 3 gpio mode ipd下拉輸入 4 gpio mode ipu上拉輸入 5 gpio mode out od開漏輸出 6 gpio mode out pp推挽輸出 7 gpio ...

STM32 STM32 GPIO模式理解

stm32的gpio的配置模式有好幾種,包括 模擬輸入 浮空輸入 上拉輸入 下拉輸入 開漏輸出 推挽輸出 復用開漏輸出 復用推挽輸出 如圖是gpio的結構原理圖 1.模擬輸入 從上圖我們可以看到,我覺得模擬輸入最重要的一點就是,他不經過輸入資料暫存器,所以我們無法通過讀取輸入資料暫存器來獲取模擬輸入...