對GPIO相關配置的理解

2021-10-09 22:02:51 字數 1149 閱讀 1705

(本文章僅僅是個人對學習的總結,如有錯誤,望各位前輩指明告知)

(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_mode_af_od 復用開漏輸出

(8)gpio_mode_af_pp 復用推挽輸出

以上即為gpio的8種配置模式,其中模擬輸入,開漏輸出,推挽輸出較為常用。

1、模擬輸入:當引腳用於adc採集電平的輸入通道時,用作模擬輸入功能;當引腳用於 dac採集電平輸出通道時,用作模擬輸出功能。

2、浮空輸入:直面意思的理解,引腳什麼都不連,引腳的電平由外部電路決定,適用與按鍵狀態的採集,但是有干擾。

3、下拉和上拉輸入:由內部電阻上下拉,(強弱只是電阻大小的區別)

4、開漏輸出:具有強上拉和強下拉的特點,強下拉輸出低電平,強上拉輸出高電平(此時需要外接電阻至vcc實現高電平輸出,一般應用於i2c、smbus通訊等需要線與功能的匯流排電路中,還可以用於電平不匹配的場合(比如需要輸入+5v的高電平,可外接上拉電阻連線至+5v的電源)

5、推挽輸出:一側推,一側拉。一般應用於輸出電平為0v,3v,而且需要高速切換的開關狀態場合。

6、對於復用功能,我們應當注意的是:使用復用功能時,輸出使能,輸出速度可配置,但是輸出訊號源於其他外設,odr無效,輸入可用,我們可以通過idr獲取io引腳的實際狀態,但是一般直接用外設的暫存器來獲取該資料訊號。

對於gpio的配置,我們應當首先了解幾個相關的暫存器。4個32位配置暫存器moder、otyper、ospeedr、pupdr,2個32位資料暫存器idr、odr,2個32位復用功能選擇暫存器afrh、afrl。

gpio初始化函式:

void gpio_init(gpio_typedef* gpiox, gpio_inittypedef* gpio_initstruct)用於配置io口功能,前提應配置好io口時鐘。

注意:對於gpio輸出速度的配置,應與實際相結合,速度太快會影響功耗、抗干擾能力。

當gpio口設定為輸入時,輸出驅動電路與埠是斷開的,所以對輸出速度的配置無意義。

我對GPIO的的理解

首先,要先說下gpio和引腳的區別,整理下網上提出的問題和答案。gpio的英文全稱general purpose input output ports,中文意思是通用i o埠。在微控制器上,微控制器有很多管腳 pin 除了一些特殊的pin,比如電源,比如地線,晶振接線等等,其他很多都可以任意定義成兩...

nodemcu的gpio相關操作

nodemcu的gpio設定為輸入狀態,好像預設是被上拉的,使用的時候注意功耗,當接地時候gpio能輸出40ma的電流 gpio.read操作不管是被設定成輸入還是輸出,這個操作都是讀取當前引腳的電平,跟輸入輸出無關 gpio.mode 1,gpio.input,gpio.pullup gpio.r...

gpio的配置流程

使能 gpio 埠時鐘 hal rcc gpiob clk enable 該hal庫函式是開啟了gpiob的時鐘 初始化 gpio 引腳,即為 gpio 初始化結構體成員賦值,並呼叫 hal gpio init 函式完成初始化配置 gpio inittypedef gpio initstruct 先...