GPIO 是通用輸入輸出端口的簡(jiǎn)稱,簡(jiǎn)單來(lái)說(shuō)就是STM32 可控制的引腳,STM32 芯片的GPIO
引腳與外部設(shè)備連接起來(lái),從而實(shí)現(xiàn)與外部通訊、控制以及數(shù)據(jù)采集的功能。STM32 芯片的GPIO被分成很多組,每組有16
個(gè)引腳,如型號(hào)為STM32F103VET6 型號(hào)的芯片有GPIOA、GPIOB、GPIOC 至GPIOE 共5 組GPIO,芯片一共100
個(gè)引腳,其中GPIO就占了一大部分,所有的GPIO引腳都有基本的輸入輸出功能。
最基本的輸出功能是由STM32 控制引腳輸出高、低電平,實(shí)現(xiàn)開(kāi)關(guān)控制,如把GPIO引腳接入到LED 燈,那就可以控制LED
燈的亮滅,引腳接入到繼電器或三極管,那就可以通過(guò)繼電器或三極管控制外部大功率電路的通斷。最基本的輸入功能是檢測(cè)外部輸入電平,如把GPIO
引腳連接到按鍵,通過(guò)電平高低區(qū)分按鍵是否被按下。
GPIO 框圖剖析
通過(guò)GPIO 硬件結(jié)構(gòu)框圖,就可以從整體上深入了解GPIO 外設(shè)及它的各種應(yīng)用模式。該圖從最右端看起,最右端就是代表STM32 芯片引出的GPIO
引腳,其余部件都位于芯片內(nèi)部。
基本結(jié)構(gòu)分析
下面我們按圖中的編號(hào)對(duì)GPIO端口的結(jié)構(gòu)部件進(jìn)行說(shuō)明。
1. 保護(hù)二極管及上、下拉電阻
引腳的兩個(gè)保護(hù)二級(jí)管可以防止引腳外部過(guò)高或過(guò)低的電壓輸入,當(dāng)引腳電壓高于VDD 時(shí),上方的二極管導(dǎo)通,當(dāng)引腳電壓低于VSS
時(shí),下方的二極管導(dǎo)通,防止不正常電壓引入芯片導(dǎo)致芯片燒毀。盡管有這樣的保護(hù),并不意味著STM32
的引腳能直接外接大功率驅(qū)動(dòng)器件,如直接驅(qū)動(dòng)電機(jī),強(qiáng)制驅(qū)動(dòng)要么電機(jī)不轉(zhuǎn),要么導(dǎo)致芯片燒壞,必須要加大功率及隔離電路驅(qū)動(dòng)。
2. P-MOS 管和N-MOS 管
GPIO 引腳線路經(jīng)過(guò)兩個(gè)保護(hù)二極管后,向上流向“輸入模式”結(jié)構(gòu),向下流向“輸出模式”結(jié)構(gòu)。先看輸出模式部分,線路經(jīng)過(guò)一個(gè)由P-MOS 和N-MOS
管組成的單元電路。這個(gè)結(jié)構(gòu)使GPIO具有了“推挽輸出”和“開(kāi)漏輸出”兩種模式。
所謂的推挽輸出模式,是根據(jù)這兩個(gè)MOS 管的工作方式來(lái)命名的。在該結(jié)構(gòu)中輸入高電平時(shí),經(jīng)過(guò)反向后,上方的P-MOS 導(dǎo)通,下方的N-MOS
關(guān)閉,對(duì)外輸出高電平;而在該結(jié)構(gòu)中輸入低電平時(shí),經(jīng)過(guò)反向后,N-MOS 管導(dǎo)通,P-MOS 關(guān)閉,對(duì)外輸出低電平。當(dāng)引腳高低電平切換時(shí),兩個(gè)管子輪流導(dǎo)通,P
管負(fù)責(zé)灌電流,N 管負(fù)責(zé)拉電流,使其負(fù)載能力和開(kāi)關(guān)速度都比普通的方式有很大的提高。推挽輸出的低電平為0
伏,高電平為3.3伏,它是推挽輸出模式時(shí)的等效電路。
而在開(kāi)漏輸出模式時(shí),上方的P-MOS 管完全不工作。如果我們控制輸出為0,低電平,則P-MOS 管關(guān)閉,N-MOS 管導(dǎo)通,使輸出接地,若控制輸出為1
(它無(wú)法直接輸出高電平)時(shí),則P-MOS 管和N-MOS
管都關(guān)閉,所以引腳既不輸出高電平,也不輸出低電平,為高阻態(tài)。為正常使用時(shí)必須外部接上拉電阻。它具有“線與”特性,也就是說(shuō),若有很多個(gè)開(kāi)漏模式引腳連接到一起時(shí),只有當(dāng)所有引腳都輸出高阻態(tài),才由上拉電阻提供高電平,此高電平的電壓為外部上拉電阻所接的電源的電壓。若其中一個(gè)引腳為低電平,那線路就相當(dāng)于短路接地,使得整條線路都為低電平,0
伏。
推挽輸出模式一般應(yīng)用在輸出電平為0 和3.3 伏而且需要高速切換開(kāi)關(guān)狀態(tài)的場(chǎng)合。在STM32
的應(yīng)用中,除了必須用開(kāi)漏模式的場(chǎng)合,我們都習(xí)慣使用推挽輸出模式。
開(kāi)漏輸出一般應(yīng)用在I2C、SMBUS 通訊等需要“線與”功能的總線電路中。除此之外,還用在電平不匹配的場(chǎng)合,如需要輸出5
伏的高電平,就可以在外部接一個(gè)上拉電阻,上拉電源為5 伏,并且把GPIO 設(shè)置為開(kāi)漏模式,當(dāng)輸出高阻態(tài)時(shí),由上拉電阻和電源向外輸出5 伏的電平。
3. 輸出數(shù)據(jù)寄存器
前面提到的雙MOS 管結(jié)構(gòu)電路的輸入信號(hào), 是由GPIO“
輸出數(shù)據(jù)寄存器GPIOx_ODR”提供的,因此我們通過(guò)修改輸出數(shù)據(jù)寄存器的值就可以修改GPIO
引腳的輸出電平。而“置位/復(fù)位寄存器GPIOx_BSRR”可以通過(guò)修改輸出數(shù)據(jù)寄存器的值從而影響電路的輸出。
4. 復(fù)用功能輸出
“復(fù)用功能輸出”中的“復(fù)用”是指STM32 的其它片上外設(shè)對(duì)GPIO 引腳進(jìn)行控制,此時(shí)GPIO
引腳用作該外設(shè)功能的一部分,算是第二用途。從其它外設(shè)引出來(lái)的“復(fù)用功能輸出信號(hào)”與GPIO本身的數(shù)據(jù)據(jù)寄存器都連接到雙MOS
管結(jié)構(gòu)的輸入中,通過(guò)圖中的梯形結(jié)構(gòu)作為開(kāi)關(guān)切換選擇。
例如我們使用USART 串口通訊時(shí),需要用到某個(gè)GPIO引腳作為通訊發(fā)送引腳,這個(gè)時(shí)候就可以把該GPIO引腳配置成USART
串口復(fù)用功能,由串口外設(shè)控制該引腳,發(fā)送數(shù)據(jù)。
1 // GPIOB 16 個(gè)IO 全部輸出 0XFF
2 GPIOB->ODR = 0XFF;
5. 輸入數(shù)據(jù)寄存器
看GPIO 結(jié)構(gòu)框圖的上半部分,GPIO
引腳經(jīng)過(guò)內(nèi)部的上、下拉電阻,可以配置成上/下拉輸入,然后再連接到施密特觸發(fā)器,信號(hào)經(jīng)過(guò)觸發(fā)器后,模擬信號(hào)轉(zhuǎn)化為0、1
的數(shù)字信號(hào),然后存儲(chǔ)在“輸入數(shù)據(jù)寄存器GPIOx_IDR”中,通過(guò)讀取該寄存器就可以了解GPIO引腳的電平狀態(tài)。
1 // 讀取GPIOB 端口的16 位數(shù)據(jù)值2uint16_ttemp;3 temp = GPIOB->IDR;
6. 復(fù)用功能輸入
與“復(fù)用功能輸出”模式類似,在“復(fù)用功能輸入模式”時(shí),GPIO引腳的信號(hào)傳輸?shù)?p> STM32 其它片上外設(shè),由該外設(shè)讀取引腳狀態(tài)。
同樣,如我們使用USART 串口通訊時(shí),需要用到某個(gè)GPIO引腳作為通訊接收引腳,這個(gè)時(shí)候就可以把該GPIO 引腳配置成USART
串口復(fù)用功能,使USART 可以通過(guò)該通訊引腳的接收遠(yuǎn)端數(shù)據(jù)。
7. 模擬輸入輸出
當(dāng)GPIO 引腳用于ADC 采集電壓的輸入通道時(shí),用作“模擬輸入”功能,此時(shí)信號(hào)是不經(jīng)過(guò)施密特觸發(fā)器的,因?yàn)榻?jīng)過(guò)施密特觸發(fā)器后信號(hào)只有0、1
兩種狀態(tài),所以ADC 外設(shè)要采集到原始的模擬信號(hào),信號(hào)源輸入必須在施密特觸發(fā)器之前。類似地,當(dāng)GPIO 引腳用于DAC
作為模擬電壓輸出通道時(shí),此時(shí)作為“模擬輸出”功能,DAC 的模擬信號(hào)輸出就不經(jīng)過(guò)雙MOS 管結(jié)構(gòu),模擬信號(hào)直接輸出到引腳。
GPIO 工作模式
總結(jié)一下,由GPIO的結(jié)構(gòu)決定了GPIO可以配置成以下模式:
(在固件庫(kù)中,GPIO總共有8 種細(xì)分的工作模式,大致歸類為以下三類)
1. 輸入模式(模擬/浮空/上拉/下拉)
在輸入模式時(shí),施密特觸發(fā)器打開(kāi),輸出被禁止,可通過(guò)輸入數(shù)據(jù)寄存器GPIOx_IDR讀取I/O
狀態(tài)。其中輸入模式,可設(shè)置為上拉、下拉、浮空和模擬輸入四種。上拉和下拉輸入很好理解,默認(rèn)的電平由上拉或者下拉決定。浮空輸入的電平是不確定的,完全由外部的輸入決定,一般接按鍵的時(shí)候用的是這個(gè)模式。模擬輸入則用于ADC
采集。
2. 輸出模式(推挽/開(kāi)漏)
在輸出模式中,推挽模式時(shí)雙MOS 管以輪流方式工作,輸出數(shù)據(jù)寄存器GPIOx_ODR可控制I/O 輸出高低電平。開(kāi)漏模式時(shí),只有N-MOS
管工作,輸出數(shù)據(jù)寄存器可控制I/O輸出高阻態(tài)或低電平。輸出速度可配置,有2MHz10MHz50MHz 的選項(xiàng)。此處的輸出速度即I/O
支持的高低電平狀態(tài)最高切換頻率,支持的頻率越高,功耗越大,如果功耗要求不嚴(yán)格,把速度設(shè)置成最大即可。
在輸出模式時(shí)施密特觸發(fā)器是打開(kāi)的,即輸入可用,通過(guò)輸入數(shù)據(jù)寄存器GPIOx_IDR可讀取I/O 的實(shí)際狀態(tài)。
3. 復(fù)用功能(推挽/開(kāi)漏)
復(fù)用功能模式中,輸出使能,輸出速度可配置,可工作在開(kāi)漏及推挽模式,但是輸出信號(hào)源于其它外設(shè),輸出數(shù)據(jù)寄存器GPIOx_ODR
無(wú)效;輸入可用,通過(guò)輸入數(shù)據(jù)寄存器可獲取I/O 實(shí)際狀態(tài),但一般直接用外設(shè)的寄存器來(lái)獲取該數(shù)據(jù)信號(hào)。
通過(guò)對(duì)GPIO 寄存器寫入不同的參數(shù),就可以改變GPIO
的工作模式,再?gòu)?qiáng)調(diào)一下,要了解具體寄存器時(shí)一定要查閱《STM32F10X-中文參考手冊(cè)》中對(duì)應(yīng)外設(shè)的寄存器說(shuō)明。在GPIO
外設(shè)中,控制端口高低控制寄存器CRH和CRL 可以配置每個(gè)GPIO的工作模式和工作的速度,每4 個(gè)位控制一個(gè)IO,CRH 控制端口的高八位,CRL
控制端口的低8 位,具體的看CRH 和CRL 的寄存器描述。
上一篇:《嵌入式-STM32開(kāi)發(fā)指南》第二部分 基礎(chǔ)篇 - 第7章DMA(HAL庫(kù))
下一篇:stm32零基礎(chǔ)入門,應(yīng)學(xué)習(xí)那些知識(shí)
推薦閱讀最新更新時(shí)間:2025-06-07 22:21






設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無(wú)線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開(kāi)發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲(chǔ)html,css,js文件,以及網(wǎng)頁(yè)和arduino的通訊
- ESP32 freeRTOS使用測(cè)試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫(kù)的一些基本介紹
- LTM4602HV 演示板、28V、6A 降壓模塊穩(wěn)壓器
- PCB書簽 尺子 卡片
- PeanutPI
- 平衡自行車+獨(dú)輪車
- AM1DR-1209SZ 9V 1 瓦 DC-DC 轉(zhuǎn)換器的典型應(yīng)用
- NCV33074ADR2G 直流耦合反相放大器最大輸出擺幅的典型應(yīng)用
- 【明日方舟】羅德島本艦主控板V6.2
- DC795A,使用 LT5527EUF 4.5V 至 5.25V 高線性下變頻混頻器的演示板
- XL4016可調(diào)恒壓恒流實(shí)驗(yàn)電源
- 帶內(nèi)部開(kāi)關(guān)的 PAM2863 2A LED 驅(qū)動(dòng)器的典型應(yīng)用
- 愛(ài)筆科技物品追蹤方案 幫助丟三落四的你尋遺失物
- 高通沉浸式家庭聯(lián)網(wǎng)平臺(tái)助力全新榮耀路由4實(shí)現(xiàn)“AI高速連
- 成都擬出臺(tái)集成電路產(chǎn)業(yè)專項(xiàng)政策
- STM8L 控制溫度傳感器DS18B20
- EPC在APEC 2022展會(huì)上展示GaN技術(shù)如何為48 V應(yīng)用帶來(lái)革命性突破
- 三菱PLC常用的一些功能指令
- e絡(luò)盟開(kāi)售安森美能源基礎(chǔ)設(shè)施解決方案
- 基于S3C2410A嵌入式處理器實(shí)現(xiàn)風(fēng)力發(fā)電監(jiān)控系統(tǒng)的應(yīng)用設(shè)計(jì)
- 示波器的反應(yīng)系統(tǒng)和特性,如何進(jìn)行產(chǎn)品選擇
- 座椅、天窗、電動(dòng)尾門應(yīng)用 國(guó)產(chǎn)車規(guī)級(jí)高壓霍爾效應(yīng)傳感器推薦
- 突發(fā)!又一車企車機(jī)“崩了”
- 寧德時(shí)代為陳立泉院士頒發(fā)“卓越貢獻(xiàn)獎(jiǎng)”
- 一文速覽吉利雷神 AI 電混 2.0 發(fā)布會(huì)重點(diǎn)
- 2025年1-4月ADAS供應(yīng)商裝機(jī)量排行榜:頭部集中與國(guó)產(chǎn)突圍并存
- 國(guó)內(nèi)飛行汽車無(wú)線通信測(cè)試成功,通信安全新突破
- SPAD席卷車載激光雷達(dá)市場(chǎng)
- 大聯(lián)大品佳集團(tuán)推出基于Microchip和ams OSRAM產(chǎn)品的10Base-T1S萬(wàn)級(jí)像素大燈方案
- 哈曼推出采用三星Neo QLED技術(shù)的全新顯示屏
- Syntiant推出超低功耗汽車AI創(chuàng)新技術(shù) 提升車輛安全性和用戶體驗(yàn)
- 升級(jí)版防爆盾,三星橫排6攝手機(jī)相機(jī)系統(tǒng)專利解密
- 傳蘋果在開(kāi)發(fā)可折疊iPhone:兩塊屏幕連接
- 蘋果iPhone 12 Pro海軍藍(lán)概念圖爆料
- 現(xiàn)多起AirPods爆炸事故:蘋果正采集設(shè)備進(jìn)一步調(diào)查
- 榮耀7寸巨屏5G機(jī)外形解密:DCI-P3廣色域/屏占比出色
- 劉浩:泛在電力物聯(lián)網(wǎng)下的綜合能源業(yè)務(wù)
- 科華恒盛1500V光伏并網(wǎng)逆變器獲TüV南德認(rèn)證證書
- 再獲400MW訂單!智利最大光伏項(xiàng)目采用陽(yáng)光電源1500V解決方案
- 2025年將有5萬(wàn)多個(gè)倉(cāng)庫(kù)使用機(jī)器人
- AI機(jī)器人攜手康復(fù)治療 社會(huì)需求是康復(fù)機(jī)器人發(fā)展的最大動(dòng)力