stm32 GPIO模式
本文章借鑒以及引用網(wǎng)上流傳的攻略,由于作者不確定,所以直接借鑒來用了,不好意思,如有問題,聯(lián)系博主整改。
先上圖:(參考手冊P105)
直接入正題,在STM32中,GPIO有八種模式:
?
(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 復(fù)用開漏輸出
(8)GPIO_Mode_AF_PP 復(fù)用推挽輸出
我們知道,在傳統(tǒng)的51單片機中,IO口只是輸出高低電平就行,但是stm32因為功能的強大,所以IO口就被賦予了非常重要的使命——讓CPU與各種外部芯片、元器件等進行“溝通”,因為模式的不同,所以一個引腳就可以接非常多的外部器件,而又引申出了“AFIO端口重映射”功能,這個后面再講(每一個內(nèi)部外設(shè)的知識都是很多的)。
首先先給個概念:輸出和輸入
以前我們使用51的時候,1是輸出、0是輸入,那是因為功能少,當(dāng)功能多的時候就得把兩種功能分開了,典型的例子有STC公司出的STC12系列以及stc15系列。STM32可以這么說吧:輸出是CPU計算后進行控制,輸入是讀取后給CPU進行計算。
輸出:GPIO的輸出與51的 IO口是差不多的概念,都是輸出高、低電平來控制外部電路:
處理過程是(如圖下半部分):CPU下達輸出高或低電平指令,指令配置“位設(shè)置/清除寄存器(GPIOx_BSRR)”(設(shè)置就是“1”高電平,清除就是“0”低電平),再由位寄存器配置輸出數(shù)據(jù)寄存器(GPIOx_ODR),經(jīng)過一個選擇器(選擇是一般輸出還是復(fù)用功能輸出),然后進行輸出控制,控制是什么模式:推挽、開漏或者關(guān)閉,然后輸出高或低電平到IO口。
輸入:進行數(shù)據(jù)的采集,外部電路通過IO口輸入模擬量,然后通過“TTL肖特基觸發(fā)器”(肖特基觸發(fā)器是將相對緩慢變化的模擬信號變成矩形信號,便于后面讀取),進入輸入數(shù)據(jù)寄存器,最后就能給CPU讀取數(shù)據(jù)。
輸入輸出講完了,我們來講講模式:
輸出:
先上圖:左邊是推挽輸出,右邊是開漏輸出。
1.??推挽輸出模式:(最常用)
引用網(wǎng)上的說明:推挽電路是兩個參數(shù)相同的三極管或 MOSFET,以推挽方式存在于電路中,各負責(zé)正負半周的波形放大任務(wù),電路工作時,兩只對稱的功率開關(guān)管每次只有一個導(dǎo)通,所以導(dǎo)通損耗小、效率高。輸出既可以向負載灌電流,也可以從負載抽取電流。推拉式輸出級既提高電路的負載能力,又提高開關(guān)速度。
簡單來說,當(dāng)一個mos管電流增大時,另一個mos管的電流就減小,當(dāng)P-MOS管飽和時,同時N-MOS截止,接通并輸出Vdd及高電平“1”,反之,當(dāng)N-MOS管飽和時,同時P-MOS截止,接通并輸出Vss及低電平“0”。 就像是這兩個mos管在相互“推、拉(挽)”,所以就叫推挽。
2.??開漏輸出模式:(不常用)
引用網(wǎng)上的說明:輸出端相當(dāng)于三極管的集電極. 要得到高電平狀態(tài)需要上拉電阻才行. 適合于做電流型的驅(qū)動,其吸收電流的能力相對強(一般20ma以內(nèi))。
利用外部電路的驅(qū)動能力,減少 IC 內(nèi)部的驅(qū)動。當(dāng) IC 內(nèi)部 MOSFET 導(dǎo)通時,驅(qū)動電流是從外部的VCC 流經(jīng) R pull-up ,MOSFET到 GND。IC 內(nèi)部僅需很少的柵極驅(qū)動電流。
3.??推挽、開漏復(fù)用模式:
當(dāng)GPIO口被用作第二功能時,需要配置,端口重映射AFIO。
輸入:
1.??浮空輸入模式:
浮空輸入狀態(tài)下,IO 的電平狀態(tài)是不確定的,完全由外部輸入決定,如果在該引腳懸空的情況下,讀取該端口的電平是不確定的。可做KEY按鍵識別
2.??上、下拉輸入模式:
如圖,內(nèi)部設(shè)有上拉和下拉電阻,當(dāng)外部電路為低電平,IO口設(shè)為下拉模式,當(dāng)外部電路為低電平,IO口設(shè)為上拉模式。
3.??模擬輸入:
用作內(nèi)部ADC輸入或DAC輸出,預(yù)防干擾。
小結(jié):
??? 常用的就是推挽輸出了,其次就是根據(jù)外部電路,配置相應(yīng)的輸入模式。
總結(jié)
以上是生活随笔為你收集整理的stm32 GPIO模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32 GPIO简单介绍及初始化配置
- 下一篇: STM32 TIMER初始化步骤