stm32 GPIO埠的幾種模式

2021-09-10 10:07:54 字數 3110 閱讀 5479

以前只使用,沒有詳細理解過。現在回來做個

輸入模式

gpio_mode_in_floating 輸入浮空

gpio_mode_ipu 輸入上拉

gpio_mode_ipd 輸入下拉

gpio_mode_ain 模擬輸入

輸出模式

gpio_mode_out_od 開漏輸出

gpio_mode_af_od 開漏復用功能

gpio_mode_out_pp 推挽式輸出

gpio_mode_af_pp 推挽式復用功能

復用功能:內建外設是與i/o口共用引出管腳(不同的功能對應同一管腳)

stm32 所有內建外設的外部引腳都是與標準gpio引腳復用的,如果有多個復用功能模組對應同乙個引腳,只能使能其中之一,其它模組保持非使能狀態。

他的兄弟:

重對映功能:復用功能的引出腳可以通過重對映,從不同的i/o管腳引出,即復用功能的引出腳位是可通過程式改變到其他的引腳上!

直接好處:pcb電路板的設計人員可以在需要的情況下,不必把某些訊號在板上繞一大圈完成聯接,方便了pcb的設計同時潛在地減少了訊號的交叉干擾。

如:usart1: 0: 沒有重映像(tx/pa9,rx/pa10); 1: 重映像(tx/pb6,rx/pb7)。

gpio的8種模式

1.輸入浮空

浮空的意思就是這個gpio在做輸入時並不上接或者下接其他器件,整個腳位呈高阻態。

一般不推薦懸空模式,此模式下引腳易受干擾。這種設定在資料傳輸時用的比較多。浮空最大的特點就是電壓的不確定性,它可能是0v,也可能是vcc,還可能是介於兩者之間的某個值(浮空一般用來做adc輸入用,這樣可以減少上下拉電阻對結果的影響

初始化後的io的電平:乙個高阻態、電平不確定。

2.輸入上拉(下拉)

上拉就是把點位拉高,比如拉到vcc(gnd)。上拉(下拉)就是將不確定的訊號通過乙個電阻嵌位在高電平(低電平)。電阻同時起到限流的作用。弱強只是上拉(下拉)電阻的阻值不同。根據stm32的資料手冊,這個上拉電阻阻值介於30k~50k歐姆。

輸入上拉初始化後電平:預設高電平,vdd開關閉合.

輸入下拉初始化:預設低電平,vss開關閉合。

3.模擬輸入

模擬輸入是指傳統方式的輸入,數字輸入是輸入pcm數碼訊號,即0,1的二進位制數碼訊號,通過數模轉換,轉換成模擬訊號,經前級放大進入功率放大器,功率放大器還是模擬的。

輸出:開漏特點最明顯的一處是:本身只能輸出低電平,本身只能輸出低電平,本身只能輸出低電平

所以這也成就的應用場景:以外置個上拉電阻來使得埠輸出高電平。那麼這個外接的電阻與電壓計量範圍就比較廣泛了,可以是5v,3.3v等等侷限性比較小。

開漏輸出(gpio_mode_out_od)

網上的一些解釋:

開漏輸出:輸出端相當於三極體的集電極,要得到高電平狀態需要上拉電阻才行。適合於做電流型的驅動,其吸收電流的能力相對強(一般20ma以內)。開漏形式的電路有以下幾個特點:

1、利用外部電路的驅動能力,減少ic內部的驅動。當ic內部mosfet導通時,驅動電流是從外部的vcc流經上拉電阻、mosfet到gnd。ic內部僅需很小的柵極驅動電流。

2、一般來說,開漏是用來連線不同電平的器件,匹配電平用的,因為開漏引腳不連線外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的乙個優點是通過改變上拉電源的電壓,便可以改變傳輸電平。比如加上上拉電阻就可以提供ttl/cmos電平輸出等。(上拉電阻的阻值決定了邏輯電平轉換的速度。阻值越大,速度越低功耗越小,所以負載電阻的選擇要兼顧功耗和速度。)

3、開漏輸出提供了靈活的輸出方式,但是也有其弱點,就是帶來上公升沿的延時。因為上公升沿是通過外接上拉無源電阻對負載充電,所以當電阻選擇小時延時就小,但功耗大;反之延時大功耗小。所以如果對延時有要求,則建議用下降沿輸出。

4、可以將多個開漏輸出連線到一條線上。通過乙隻上拉電阻,在不增加任何器件的情況下,形成「與邏輯」關係,即「線與」。可以簡單的理解為:在所有引腳連在一起時,外接一上拉電阻,如果有乙個引腳輸出為邏輯0,相當於接地,與之併聯的迴路「相當於被一根導線短路」,所以外電路邏輯電平便為0,只有都為高電平時,與的結果才為邏輯1。

開漏復用功能(gpio_mode_af_od

可在外部上拉相應的電壓和電阻,實現較大的io驅動能力

-推挽式輸出(gpio_mode_out_pp)

推挽輸出可以由io控制輸出相應的高電平vdd和低電平vss。連線數字器件;推挽結構一般是指兩個三極體分別受兩個互補訊號的控制,總是在乙個三極體導通的時候另乙個截止。高低電平由ic的電源決定。

何謂推挽?

推挽電路是兩個引數相同的三極體或mosfet,以推挽方式存在於電路中,各負責正負半周的波形放大任務,電路工作時,兩隻對稱的功率開關管每次只有乙個導通,所以導通損耗小、效率高。輸出既可以向負載灌電流,也可以從負載抽取電流。推拉式輸出級既提高電路的負載能力,又提高開關速度。

-推挽式復用功能(gpio_mode_af_pp)

STM32 GPIO的幾種工作模式

1 模擬輸入 i o口當作input使用,並且是模擬輸入。模擬狀態下用來接收模擬量 電壓值 一般用於ad採集。2 浮空輸入 沒有上拉和下拉電阻,當引腳沒有和外部電路連線時,i o埠的電平是不確定的,即使外部的乙個很小的輸入訊號都會使其發生變化。3 上拉輸入 引腳內部有乙個上拉電阻通過開關連線到電源v...

STM32GPIO部分介紹

最近在老師交給了乙個專案,需要用到stm32微控制器,這裡就在學習的過程中所注意到的一些地方或細節部分記錄了下來,筆者所使用的是stm32f407zgt6晶元 探索者 檢視晶元的資料手冊 這個 對每個i o口的功能進行了很詳細的介紹。每個i o除了作為i o使用外,還可以作為其他的復用。已以pe2口...

STM32 GPIO模式總結

4種輸入模式 浮空輸入 上拉輸入 下拉輸入 模擬輸入 4種輸出模式 開漏輸出 復用開漏輸出 推挽輸出 復用推挽輸出 3種最大輸出速度 2mhz 10mhz 50mhz 浮空輸入模式 1 外部通過io口輸入電平,外部電平通過上下拉部分 浮空模式下都關閉,既無 上拉也無下拉電阻 2 傳輸到施密特觸發器 ...