相信在開發(fā)STM32的時(shí)候很多小伙伴都會(huì)碰到GPIO的設(shè)置問題,如下圖所示:
對于設(shè)置成什么模式,很多新手是迷茫的,這是由于對這些模式的含義理解不清,導(dǎo)致在實(shí)際項(xiàng)目中對管腳的配置有誤,使電路出現(xiàn)問題。下面這張圖是GPIO內(nèi)部的架構(gòu)圖,先大致看一下。
我們首先來看輸入部分,輸入分為:浮空輸入,上拉輸入,下拉輸入,模擬輸入。
(1)上拉輸入指的是芯片內(nèi)部控制引腳通過電阻接到電源電壓,加強(qiáng)引腳的驅(qū)動(dòng)能力,有助于防止引腳處于不穩(wěn)定狀態(tài),減少誤觸發(fā)和噪音干擾。如下圖所示:
由于芯片內(nèi)部的上拉電阻是可以通過開關(guān)來進(jìn)行通斷的,如下:
(2)下拉輸入指的是芯片內(nèi)部控制引腳通過電阻接到GND。通過下拉電阻把引腳的電平固定在低電平狀態(tài),防止電平浮動(dòng)引發(fā)的干擾和誤觸發(fā)。
由于芯片內(nèi)部的下拉電阻是可以通過開關(guān)來進(jìn)行通斷的,如下:
(3)浮空輸入浮空輸入其實(shí)很好理解,就是輸入引腳不接任何的電源(VDD)和地平面(GND),處于一個(gè)開路的狀態(tài)。對于浮空輸入,在很多情況下引腳很容易受到周圍環(huán)境的干擾,引起電壓的波動(dòng)。
(4)推挽輸出推挽輸出的基本模型如下圖所示:
由上面兩張圖可知,輸出引腳可以通過控制上管和下管的導(dǎo)通和截止來改變引腳的輸出。基本通路如下:
(5)開漏輸出開漏是很多初學(xué)者無法理解的一種狀態(tài),開漏其實(shí)就只有一個(gè)下管,如下圖所示:
當(dāng)外部沒有接上拉電阻時(shí),引腳是無法輸出高電平的,只能實(shí)現(xiàn)低電平狀態(tài),所以一般開漏模式都會(huì)外置上拉電阻來配合使用,如果沒有外置上拉電阻的話,引腳只能是低電平和高阻態(tài),而無法實(shí)現(xiàn)高電平狀態(tài)。電平的幅值主要取決于外部的上拉電壓,可實(shí)現(xiàn)電平轉(zhuǎn)換。但驅(qū)動(dòng)能力完全靠外部上拉電阻,功率和速率都被限制。
(6)高阻態(tài)其實(shí)很好理解,高阻,高阻,就是指輸入引腳的阻抗會(huì)非常的高,幾乎沒有電流的流動(dòng),這樣的好處在于不會(huì)影響到其他電路的正常運(yùn)行。一般高阻態(tài)的取值既不是0,也不是1,通常用“X”表示,處于一種中間的狀態(tài)。相對于高阻態(tài)來說,開漏輸出就是一種阻值非常低的“低阻態(tài)了”。
總結(jié):