Ⅰ、寫(xiě)在前面
在開(kāi)發(fā)STM32的時(shí)候,都需要對(duì)IO的模式進(jìn)行配置(GPIO_InitStructure. GPIO_Mode = xxx)。但是,你們都知道各種模式的具體意義嗎?
有的人問(wèn):IO口輸出可以上拉嗎? 開(kāi)漏輸出是干什么用的?
其實(shí)這些問(wèn)題并不難,只要你了解到每一種模式的真正意思,相信這些問(wèn)題都不會(huì)難道你。本文的內(nèi)容比較基礎(chǔ),也比較實(shí)用,希望對(duì)你有所幫助。
關(guān)于本文的詳細(xì)內(nèi)容請(qǐng)看下面章節(jié)
Ⅱ、模式說(shuō)明
STM32芯片的IO有8中模式:
(2)GPIO_Mode_IN_FLOATING 浮空輸入
(3)GPIO_Mode_IPD 下拉輸入
(4)GPIO_Mode_IPU 上拉輸入
(5)GPIO_Mode_Out_OD 開(kāi)漏輸出
(6)GPIO_Mode_Out_PP 推挽輸出
(7)GPIO_Mode_AF_OD 復(fù)用開(kāi)漏輸出
(8)GPIO_Mode_AF_PP 復(fù)用推挽輸出
四種輸入模式 + 四種輸出模式
上面IO結(jié)構(gòu)圖來(lái)自STM32F1參考手冊(cè),從圖中可以看得出來(lái)IO口大致的結(jié)構(gòu),也能反映出各種模式。
代碼中常見(jiàn)的一些配置:
Ⅲ、本文要點(diǎn)
下面結(jié)合相關(guān)資料,講述一下各種模式的內(nèi)容:
1.GPIO_Mode_AIN 模擬輸入
這個(gè)模式比較好理解,主要用于模擬輸入時(shí)的配置(一般是針對(duì)ADC功能)。在特殊DAC輸出的時(shí)候也用該模式,參看手冊(cè):
2.GPIO_Mode_IN_FLOATING 浮空輸入
浮空顧名思義就是懸浮在空中,也叫懸空輸入。配置成浮空輸入模式,如果沒(méi)有連接其他設(shè)備,檢測(cè)其電平是不定的,有可能檢測(cè)到高電平,也有可能堅(jiān)持到低電平。
3.GPIO_Mode_IPD、GPIO_Mode_IPU上下拉
GPIO_Mode_IPD下拉 和 GPIO_Mode_IPU上拉模式應(yīng)該大家都明白它的意思,它們和浮空輸入是成對(duì)應(yīng)關(guān)系。
A.上拉或下拉電阻阻值?
有些時(shí)候,了解到阻值的大小有助于硬件的設(shè)計(jì),以及軟件的編程,阻值大小一般是40K左右,具體可以參看數(shù)據(jù)手冊(cè):
B.疑問(wèn)
有的人會(huì)有這樣的疑問(wèn),為什么沒(méi)有輸出下拉?或輸出上拉?
答案其實(shí)很簡(jiǎn)單,在該系統(tǒng)中,MCU起到主要作用,輸出的電平是由MCU決定,要么是高電平,要么是低電平。
4.GPIO_Mode_Out_OD 開(kāi)漏輸出
開(kāi)漏輸出這個(gè)功能是比較重要的,也是相對(duì)比較難一點(diǎn)的(當(dāng)然,明白了就覺(jué)得簡(jiǎn)單)。或許我們平時(shí)沒(méi)怎么使用過(guò)該功能,并不知道它具體的用途,就沒(méi)有多去了解它。
開(kāi)漏輸出大致意思:設(shè)置引腳輸出為“1”時(shí),該引腳處于開(kāi)漏,也就是相當(dāng)于浮空狀態(tài); 設(shè)置引腳輸出為“0”時(shí),該引腳將拉低電平。
前面我有一篇文章【模擬I2C讀寫(xiě)EEPROM】里面I2C總線的SDA引腳就使用了開(kāi)漏輸出功能。也就是需要在釋放SDA總線時(shí),只需要將SDA設(shè)置輸出為“1”就行了。
5.GPIO_Mode_Out_PP 推挽輸出
推挽輸出:意思就是輸出具有驅(qū)動(dòng)能力(比如:引腳上接一個(gè)LED,可以直接點(diǎn)亮,若是開(kāi)漏輸出,就不能點(diǎn)亮LED)。
推挽輸出這個(gè)功能是比較常用的功能,我們一般輸出控制某個(gè)信號(hào),基本上都是配置為GPIO_Mode_Out_PP 推挽輸出。
推挽輸出電流大小也是比較關(guān)鍵的一個(gè)參數(shù),根據(jù)芯片不同,其大小也不同,具體可以查看數(shù)據(jù)手冊(cè):
6.GPIO_Mode_AF_OD 復(fù)用開(kāi)漏輸出
復(fù)用開(kāi)漏輸出:該模式和上面“GPIO_Mode_Out_OD開(kāi)漏輸出”類似,只是它引腳對(duì)應(yīng)的功能具有復(fù)用的功能。前面文章【硬件I2C讀寫(xiě)EEPROM】里面就是使用了該功能。
7.GPIO_Mode_AF_PP 復(fù)用推挽輸出
復(fù)用推挽輸出功能和推完功能類似,主要用在具有復(fù)用功能的情況下,比如USART的TX引腳等。
-
iOS
+關(guān)注
關(guān)注
8文章
3399瀏覽量
152517 -
GPIO
+關(guān)注
關(guān)注
16文章
1274瀏覽量
53585 -
STM32F10
+關(guān)注
關(guān)注
0文章
46瀏覽量
15819
發(fā)布評(píng)論請(qǐng)先 登錄
CYUSB3065 (CX3) GPIO 所有輸出都是推挽還是開(kāi)漏? 需要配置外部上拉/下拉電阻嗎?
【RA-Eco-RA4M2開(kāi)發(fā)板評(píng)測(cè)】2 初識(shí)GPIO流水燈
嵌入式硬件雜談:推挽、開(kāi)漏、高阻態(tài)、上拉電阻

TLV1842 雙通道高速高電壓開(kāi)漏比較器技術(shù)手冊(cè)

SN74AVC8T245能同時(shí)支持推挽輸出和開(kāi)漏輸出兩種數(shù)據(jù)進(jìn)行轉(zhuǎn)換嗎?
開(kāi)漏輸出,實(shí)際測(cè)試此引腳懸空,電后輸出5V高電平,保護(hù)后輸出低電平0V,這不是推挽輸出嗎?
推挽輸出和開(kāi)漏輸出區(qū)別是什么
關(guān)于STM32F1開(kāi)漏輸出的誤解

評(píng)論