STM32 什么時(shí)候使用什么GPIO模式合適

STM32GPIO總共有八種工作模式
(1)GPIO_Mode_AIN 模擬輸入
模擬輸入:一般用于ADC等其他模擬信號(hào)輸入方式使用。
(2)GPIO_Mode_IN_FLOATING 浮空輸入
浮空輸入: 一般多用于外部按鍵輸入,浮空輸入狀態(tài)下,IO的電平狀態(tài)是不確定的,完全由外部輸入決定,如果在該引腳懸空的情況下,讀取該端口的電平是不確定的。
(3)GPIO_Mode_IPD 下拉輸入
下拉輸入:保證IO沒(méi)有信號(hào)輸入時(shí),STM32檢測(cè)到是低電平,有信號(hào)時(shí),跟隨信號(hào)電平。 可在端口輸入捕獲等方式中使用。
(4)GPIO_Mode_IPU 上拉輸入
上拉輸入: 保證IO沒(méi)有外部信號(hào)輸入時(shí),STM32檢測(cè)到是高電平,有信號(hào)時(shí),跟隨信號(hào)電平;
(5)GPIO_Mode_Out_OD 開(kāi)漏輸出
開(kāi)漏輸出: 一般為多個(gè)開(kāi)漏輸出端口連接在一起時(shí),當(dāng)有一個(gè)端口位低電平時(shí),整個(gè)線路均顯示為低電平,公共影響所有端口。
(6)GPIO_Mode_Out_PP 推挽輸出
推挽輸出: 可以輸出高,低電平,連接數(shù)字器件; 推挽結(jié)構(gòu)一般是指兩個(gè)三極管分別受兩互補(bǔ)信號(hào)的控制,總是在一個(gè)三極管導(dǎo)通的時(shí)候另一個(gè)截止。高低電平由IC的電源低定。推挽電路是兩個(gè)參數(shù)相同的三極管或MOSFET,以推挽方式存在于電路中,各負(fù)責(zé)正負(fù)半周的波形放大任務(wù),電路工作時(shí),兩只對(duì)稱(chēng)的功率開(kāi)關(guān)管每次只有一個(gè)導(dǎo)通,所以導(dǎo)通損耗小、效率高。輸出既可以向負(fù)載灌電流,也可以從負(fù)載抽取電流。推拉式輸出級(jí)既提高電路的負(fù)載能力,又提高開(kāi)關(guān)速度。
(7)GPIO_Mode_AF_OD 復(fù)用開(kāi)漏輸出
復(fù)用開(kāi)漏輸出: IIC 協(xié)議SCL、SDA端口復(fù)用使用。
(8)GPIO_Mode_AF_PP 復(fù)用推挽輸出
復(fù)用推挽輸出: 應(yīng)用于PWM波等特殊功能端口輸出。
開(kāi)漏模式與推挽模式詳解
開(kāi)漏模式:
1、用來(lái)連接不同電平的器件,匹配電平用的,因?yàn)殚_(kāi)漏引腳不連接外部的上拉電阻時(shí),只能輸出低電平,如果需要同時(shí)具備輸出高電平的功能,則需要接上拉電阻,很好的一個(gè)優(yōu)點(diǎn)是通過(guò)改變上拉電源的電壓,便可以改變傳輸電平。
2、. 可以將多個(gè)開(kāi)漏輸出的Pin,連接到一條線上。通過(guò)一只上拉電阻,在不增加任何器件的情況下,形成“與邏輯”關(guān)系。這也是I2C,SMBus等總線判斷總線占用狀態(tài)的原理。
3、簡(jiǎn)單理解就時(shí):在所有引腳連在一起時(shí),外接一上拉電阻,如果有一個(gè)引腳輸出為邏輯0,相當(dāng)于接地,與之并聯(lián)的回路“相當(dāng)于被一根導(dǎo)線短路”,所以外電路邏輯電平便為0,只有都為高電平時(shí),與的結(jié)果才為邏輯1。
推挽模式:它可以輸出高,低電平,通常是用來(lái)連接數(shù)字器件,例如繼電器(繼電器通常只需要高低電平即可控制),數(shù)字邏輯器件(如與非門(mén)控制芯片,移位控制芯片)等。
STM32GPIO端口復(fù)用功能
STM32 有很多的內(nèi)置外設(shè),這些外設(shè)的外部引腳都是與 GPIO 復(fù)用的。也就是說(shuō),一個(gè) GPIO如果可以復(fù)用為內(nèi)置外設(shè)的功能引腳,那么當(dāng)這個(gè) GPIO 作為內(nèi)置外設(shè)使用的時(shí)候,就叫做復(fù)用。
通常有5種方式使用某個(gè)引腳功能,它們的配置方式如下:
1)作為普通GPIO輸入:根據(jù)需要配置該引腳為浮空輸入、帶弱上拉輸入或帶弱下拉輸入,同時(shí)不要使能該引腳對(duì)應(yīng)的所有復(fù)用功能模塊。
2)作為普通GPIO輸出:根據(jù)需要配置該引腳為推挽輸出或開(kāi)漏輸出,同時(shí)不要使能該引腳對(duì)應(yīng)的所有復(fù)用功能模塊。
3)作為普通模擬輸入:配置該引腳為模擬輸入模式,同時(shí)不要使能該引腳對(duì)應(yīng)的所有復(fù)用功能模塊。
4)作為內(nèi)置外設(shè)的輸入:根據(jù)需要配置該引腳為浮空輸入、帶弱上拉輸入或帶弱下拉輸入,同時(shí)使能該引腳對(duì)應(yīng)的某個(gè)復(fù)用功能模塊。
5)作為內(nèi)置外設(shè)的輸出:根據(jù)需要配置該引腳為復(fù)用推挽輸出或復(fù)用開(kāi)漏輸出,同時(shí)使能該引腳對(duì)應(yīng)的所有復(fù)用功能模塊。
注意 : 如果有多個(gè)復(fù)用功能模塊對(duì)應(yīng)同一個(gè)引腳,只能使能其中之一,其它模塊保持非使能狀態(tài)。
轉(zhuǎn)載自:http://t.csdn.cn/RSeFb