|
初次接觸STM32,對(duì)GPIO的工作模式有時(shí)一臉懵(比51要復(fù)雜不少),在此作個(gè)簡(jiǎn)記。
GPIO工作模式
STM32的GPIO有4種輸入模式(浮空輸入、上拉輸入、下拉輸入、模擬輸入),4種輸出模式(開(kāi)漏輸出、復(fù)用開(kāi)漏輸出、推挽輸出、復(fù)用推挽輸出)。
浮空輸入
在該模式下,I/O口的電平信號(hào)直接進(jìn)入GPIO端口輸入數(shù)據(jù)寄存器(GPIOx_IDR),MCU直接讀取I/O口的電平,I/O口的電平狀態(tài)完全由外部輸入來(lái)決定;若該引腳懸空(無(wú)信號(hào)輸入),讀取到的電平狀態(tài)為不確定。
上拉輸入
I/O口內(nèi)部接上拉電阻,若引腳懸空或I/O口外部沒(méi)有信號(hào)輸入,I/O口默認(rèn)為高電平;若I/O口輸入低電平,則引腳為低電平,MCU讀取到的就是低電平。
下拉輸入
I/O口內(nèi)部接下拉電阻,若引腳懸空或I/O口外部沒(méi)有信號(hào)輸入,I/O口默認(rèn)為低電平;若I/O口輸入高電平,則引腳就為高電平,MCU讀取到的就是高電平。
模擬輸入
在該模式下,GPIOx_IDR為空,引腳的上拉/下拉電阻不起作用(即使配置了上拉/下拉模式)。
開(kāi)漏輸出
在該模式下,若控制輸出為低電平,I/O口處于低電平狀態(tài);若控制輸出為高電平,I/O口的電平狀態(tài)由I/O口外部的上拉/下拉電阻來(lái)決定,若無(wú)上拉/下拉,I/O口處于懸空狀態(tài)。
在該模式下,輸入可用,可通過(guò)GPIOx_IDR讀取I/O口的實(shí)際狀態(tài),I/O口的電平不一定是輸出的電平。
復(fù)用開(kāi)漏輸出
GPIO復(fù)用為其他外設(shè),GPIO端口輸出數(shù)據(jù)寄存器(GPIOx_ODR)無(wú)效;輸出的高/低電平來(lái)源于其它外設(shè),輸入可用,可通過(guò)GPIOx_IDR獲取I/O實(shí)際狀態(tài),除了輸出信號(hào)的來(lái)源改變外,其它與開(kāi)漏輸出模式功能相同。
推挽輸出
在該模式下,若控制輸出為低電平,I/O口處于低電平狀態(tài);若控制輸出為高電平,I/O口處于高電平狀態(tài),外部上拉/下拉可控制在沒(méi)有輸出時(shí)I/O口的電平。
在該模式下,輸入可用,可通過(guò)GPIOx_IDR讀取I/O口的實(shí)際狀態(tài),I/O口的電平一定是輸出的電平。
復(fù)用推挽輸出
GPIO復(fù)用為其他外設(shè),GPIOx_ODR無(wú)效;輸出的高/低電平來(lái)源于其它外設(shè),輸入可用,可通過(guò)GPIOx_IDR獲取I/O實(shí)際狀態(tài),除了輸出信號(hào)的來(lái)源改變外,其它與推挽輸出模式功能相同。
補(bǔ)充
推挽輸出模式可以輸出強(qiáng)高/強(qiáng)低電平,連接數(shù)字器件;
開(kāi)漏輸出模式可以輸出強(qiáng)低電平,需要外接上拉電阻才能實(shí)現(xiàn)輸出高電平;
任何一種開(kāi)漏模式,都需要接上拉電阻,否則只能輸出低電平。
上拉輸入/下拉輸入可用于檢測(cè)外部信號(hào)(例如,按鍵);
開(kāi)漏輸出一般應(yīng)用于IIC等需要線與功能的總線電路中;
復(fù)用開(kāi)漏輸出/復(fù)用推挽輸出應(yīng)用于片內(nèi)外設(shè);
STM32的GPIO輸出,除了必須用開(kāi)漏模式的場(chǎng)合,一般都使用推挽模式。
|
評(píng)分
-
查看全部評(píng)分
|