STM32 GPIO的8種工作模式及相關配置暫存器

2021-08-19 10:24:11 字數 1801 閱讀 2574

gpio八種工作模式

四種輸入: 

gpio_mode_ipu(上拉輸入)

gpio_mode_ipd(下拉輸入)

原理: 經過上拉開關和下拉開關的連線,再經過觸發器轉化為0,1的數碼訊號,儲存到資料暫存器中,然後我們就可以通過配置暫存器crl,crh控制這兩個開關。 

用法: 若gpio引腳配置為上拉輸入模式,在預設狀態下(gpio引腳無輸入),取得的gpio引腳資料為1,既高電平. 而下拉輸入模式則是相反的,在預設狀態下其引腳資料為0,低電平.

gpio_mode_in_floating(浮空輸入)

原理: 不接上拉和下拉開關,直接經由觸發器輸入. 

用法: 若配置成這個模式可以用電表測量其引腳電壓是1點幾伏(不確定的值).由於輸入阻抗較大,一般把這種模式用於標準的通訊協議例如:i2c,usart的接收端.

gpio_mode_ain(模擬輸入)

原理: 直接關閉觸發器,不接上拉和下拉開關,由另一路開關傳至片上外設模組. 

用法: 例如傳送至adc模組時,就由adc採集電壓訊號.(使用adc外設的時候,必須是設定為模擬輸入模式).

四種輸出: 

gpio_mode_out_pp(普通推挽輸出)

原理: 

經過乙個由p_mos和n_mos管組成的單元電路.輸出高電平(3.3v)時,p_mos導通,低電平(0v)時,n_mos導通(兩個管子輪流導通,乙個進電流,乙個拉電流.這樣它的負載能力和開關速度都比普通方式有大的提高) 

用法: 

一般都是應用在輸出電平為0和3.3v的場合.

gpio_mode_out_od(普通開漏輸出)

原理: 

在輸出0時,既高電平,則n_mos管導通,使輸出接地.在輸出1時,則不輸出高電平也不輸出低電平(無法輸出高電平,本身為高阻態).所以在使用的時候,必須在外部接上乙個上拉電阻並且開漏輸出模式具有」線與」的特性,既有很多開漏模式的引腳接到一起時,只有在所有引腳都處於高阻態的時候,才會輸出高電平.(電壓是外部上拉電阻所接電源的電壓).只要其中乙個引腳是低電平,那麼整個線路都等於短路接地(低電平),電壓是0v.(只要是開漏輸出模式,都必須接上拉電阻) 

用法: 

一般應用在電平不匹配的場合,如需要輸出5v的高電平,就需要在外部接上乙個上拉電阻,電源為5v.這時在輸出高組態的時候,就會由上拉電阻和電源向外輸出5v.

gpio_mode_af_pp(復用推挽輸出)

gpio_mode_af_od(復用開漏輸出)

原理: 同上. 

用法: 對於復用模式,一般都是由gpio的復用功能來選擇的(比如乙個io引腳可以做一般輸入輸出,同時還是串列埠輸出腳,這就是復用) 例如:gpio的引腳用作串列埠的輸出,就可以使用復用推挽輸出模式了.如果是用在i2c,smbus這些需要線與功能的,就使用復用開漏輸出

gpio相關配置暫存器

每組gpio埠的暫存器包括:

如果配置乙個io口需要2個位,那麼剛好32位暫存器配置一組io口16個io口

如果配置乙個io口只需要1個位,一般高16位保留

bsrr暫存器32位分為低16位bsrrl和高16位bsrrh,bsrrl配置一組io口的16個io口的置位狀態(1),bsrrh配置復位狀態(0)。

STM32 GPIO的8種工作模式

一 推挽輸出 可以輸出高 低電平,連線數字器件 推挽結構一般是指兩個三極體分別受兩個互補訊號的控制,總是在乙個三極體導通的時候另乙個截止。高低電平由ic的電源決定。推挽電路是兩個引數相同的三極體或mosfet,以推挽方式存在於電路中,各負責正負半周的波形放大任務,電路工作時,兩隻對稱的功率開關管每次...

stm32GPIO無法工作原因

最近在除錯0.96寸oled時遇見了乙個非常奇怪的問題,當我軟體模擬spi時某些引腳死活不工作,一開始我以為是我的板子問題,但實際上是stm32對於某些引腳預設有一些操作,導致無法正常的初始化。對於開發者來說,stm32很多引腳都有非常豐富的功能,能讓我們開發者進行很多功能的開發,但是正是因為引腳功...

STM32 GPIO的幾種工作模式

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