STM32 GPIO模式總結

2021-08-11 17:55:08 字數 3658 閱讀 6028

4種輸入模式

浮空輸入

上拉輸入

下拉輸入

模擬輸入

4種輸出模式

開漏輸出

復用開漏輸出

推挽輸出

復用推挽輸出

3種最大輸出速度

2mhz

10mhz

50mhz

浮空輸入模式

1) 外部通過io口輸入電平,外部電平通過上下拉部分(浮空模式下都關閉,既無

上拉也無下拉電阻)

2) 傳輸到施密特觸發器(此時施密特觸發器為開啟狀態)

施密特觸發器作用:

1. 波形變換

可將三角波、正弦波等變成矩形波。

2. 脈衝波的整形

數字系統中,矩形脈衝在傳輸中經常發生波形畸變,出現上公升沿和下降沿不理想的情況,可用施密特觸發器整形後,獲得較理想的矩形脈衝。

3. 脈衝鑑幅 幅度不同、不規則的脈衝訊號施加到施密特觸發器的輸入端時,能選擇幅度大於欲設值的脈衝訊號進行輸出。

3) 繼續傳輸到輸入資料暫存器idr

4) cpu通過讀輸入資料暫存器idr實現讀取外部輸入電平值

5) 在輸入浮空模式下可以讀取外部輸入電平

6) 由於浮空輸入一般多用於外部按鍵輸入,有的理解為,浮空輸入狀態下,io的電平狀態是不確定的,完全由外部輸入決定,如果在該引腳懸空的情況下,讀取該埠的電平是不確定的。

上拉輸入模式

在沒有訊號輸入的時候,上拉電阻能使讀取input值保持為高,而下拉電阻正是相反。有些感測器等元氣件,他們的訊號輸出有效時候會輸出乙個高電平(或者低電平),無效時候不輸出,為開路。此時我們就必須用上拉電阻(或下拉電阻)。i2s時下拉輸入,其它都是上拉輸入。

和輸入浮空模式相比較,不同之處在於內部有乙個上拉電阻連線到vdd(輸入上拉模式下,上拉電阻開關接通,阻值約30-50k)。

外部輸入通過上拉電阻,施密特觸發器存入輸入資料暫存器idr,被cpu讀取。

輸入下拉模式

和輸入浮空模式相比較,不同之處在於內部有乙個下拉電阻連線到vss(輸入下拉模式下,下拉電阻開關接通,阻值約30-50k)

外部輸入通過下拉電阻,施密特觸發器存入輸入資料暫存器idr,被cpu讀取

輸入模擬模式

1.上拉和下拉部分均為關閉狀態(ad轉換-模擬量轉換為數字量)

2.施密特觸發器為截止狀態

3.通過模擬輸入通道輸入到cpu

4.io口外部電壓為模擬量(電壓形式非電平形式),作為模擬輸入範圍一般為0~3.3v

開漏輸出模式

1,cpu寫入

位設定/清

除暫存器bsrr,對映到輸出資料暫存器odr 2,

連通到輸出控制電路(也就是odr的電平)

3,odr電平通過輸出控制電路進入n-mos管

-odr輸出1:

n-mos截止,io埠電平不會由odr輸出決定,而由外部上拉/下拉決定

在輸出狀態下,輸出的電平可以被讀取,資料存入輸入資料暫存器,由cpu讀取,實現cpu讀取輸出電平。

所以,當n-mos截止時,如果讀取到輸出電平為1,不一定是我們輸出的1,有可能是外部上拉產生的1。

-odr輸出0:

n-mos開啟,io埠電平被n-mos管拉倒vss,使io輸出低電平

此時輸出的低電平同樣可以被cpu讀取到。

開漏復用輸出模式

與開漏輸出模式唯一的區別在於輸出控制電路之前電平的**

開漏輸出模式的輸出電平是由

cpu寫入輸出資料暫存器

控制的

開漏推挽輸出模式的輸出電平是

由復用功能外設輸出

決定的其他與開漏輸出模式相似:

控制電路輸出為1:n-mos截止,io口電平由外部上拉/下拉決定

控制電路輸出為0:n-mos開啟,io口輸出低電平

推挽輸出模式

與開漏輸出相比較:

輸出控制暫存器部分相同

輸出驅動器部分加入了p-mos管部分

當輸出控制電路輸出1時:

p-mos管導通n-mos管截止,被上拉到高電平,io口輸出為高電平1

當輸出控制電路輸出0時:

p-mos管截止n-mos管導通,被下拉到低電平,io口輸出為低電平0

同時io口輸出的電平可以通過輸入電路讀取

復用推挽輸出模式

與推挽輸出模式唯一的區別在於輸出控制電路之前電平的**

開漏輸出模式的輸出電平是由

cpu寫入輸出資料暫存器

控制的

開漏推挽輸出模式的輸出電平是由

復用功能外設輸出

決定的推挽輸出:

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

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

詳細理解:

推挽放大器的輸出級有兩個「臂」(兩組放大元件),乙個「臂」的電流增加時,另乙個「臂」的電流則減小,二者的狀態輪流轉換。對負載而言,好像是乙個「臂」在推,乙個「臂」在拉,共同完成電流輸出任務。當輸出高電平時,也就是下級負載門輸入高電平時,輸出端的電流將是下級門從本級電源經vt3拉出。這樣一來,輸出高低電平時,vt3 一路和 vt5 一路將交替工作,從而減低了功耗,提高了每個管的承受能力。又由於不論走哪一路,管子導通電阻都很小,使rc常數很小,轉變速度很快。因此,推拉式輸出級既提高電路的負載能力,又提高開關速度。

推挽輸出和開漏輸出的區別:

推挽輸出:可以輸出強高/強低電平,可以連線數字器件

開漏輸出:只能輸出強低電平(高電平需要依靠外部上拉電子拉高),適合做電流型驅動,吸收電流能力較強(20ma之內)在stm32中選用io模式設定推挽模式,只能是輸出模式,而輸出高低電平的驅動電流都很大。即可作為輸出,也可作為輸入。作輸出時,要輸出高電平,需要外加上拉電阻。

作輸入時,要求處理高電平狀態,才能讀外部引腳。

gpio配置情況

(1) 浮空輸入_in_floating ——浮空輸入,可以做key識別,rx1

(2) 帶上拉輸入_ipu——io內部上拉電阻輸入

(3) 帶下拉輸入_ipd—— io內部下拉電阻輸入

(4) 模擬輸入_ain ——應用adc模擬輸入,或者低功耗下省電

(5) 開漏輸出_out_od ——io輸出0接gnd,io輸出1,懸空,需要外接上拉電阻,才能實現輸出高電平。當輸出為1時,io口的狀態由上拉電阻拉高電平,但由於是開漏輸出模式,這樣io口也就可以由外部電路改變為低電平或不變。可以讀io輸入電平變化,實現c51的io雙向功能

(6)推挽輸出_out_pp ——io輸出0-接gnd, io輸出1 -接vcc,讀輸入值是未知的

(7)復用功能的推挽輸出_af_pp ——片內外設功能(i2c的scl,sda)

(8)復用功能的開漏輸出_af_od——片內外設功能(tx1,mosi,miso.sck.ss)

STM32GPIO模式詳解

stm32gpio模式詳解 輸入浮空 浮空就是邏輯器件與引腳即不接高電平,也不接低電平。由於邏輯器件的內部結構,當它輸入引腳懸空時,相當於該引腳接了高電平。一般實際運用時,引腳不建議懸空,易受干擾。通俗講就是浮空就是浮在空中,就相當於此埠在預設情況下什麼都不接,呈高阻態,這種設定在資料傳輸時用的比較...

STM32 GPIO的幾種工作模式

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

stm32 GPIO埠的幾種模式

以前只使用,沒有詳細理解過。現在回來做個 輸入模式 gpio mode in floating 輸入浮空 gpio mode ipu 輸入上拉 gpio mode ipd 輸入下拉 gpio mode ain 模擬輸入 輸出模式 gpio mode out od 開漏輸出 gpio mode af ...