一.GPIO的簡介
GPIO (general purpose input output)是通用輸入輸出端口的簡稱,簡單來說就是軟件可控制的引腳,STM32芯片的GPIO引腳與外部設備連接起來,從而實現與外部通訊、控制以及數據采集的功能。
1.引腳全是GPIO嘛?
答案是否定的,不是所有引腳都是GPIO
STM32F103VET6引腳圖
STM32 芯片的 GPIO 被分成很多組,每組有 16 個引腳,如型號為 STM32F103VET6 型號的芯片有 GPIOA、GPIOB、GPIOC 至 GPIOE 共 5 組 GPIO,例如GPIOA(PA0~PA15 16個引腳)芯片一共 100 個引腳,其中GPIO 就占了一大部分,所有的 GPIO 引腳都有基本的輸入輸出功能
這100個引腳中除了GPIO還有特殊功能的引腳,例如復位引腳,電源引腳…
2.GPIO的輸入輸出模式
GPIO可配置8種模式
輸出模式下可控制端口的輸出高低電平,可用于驅動LED、控制蜂鳴器、模擬通信協議輸出時序(SPI I2C 等)等
輸入模式下可讀取端口的高低電平或電壓,用于讀取按鍵輸入,外接模塊電平信號輸入,ADC電壓采集、模擬通信協議接收數據(SPI I2C 等)等
3.GPIO基本結構
每個GPIO端口對應16個引腳,例GPIOA(PA0~PA15)
內核cpu就可以通過APB2總線對寄存器讀寫,完成輸出電平和讀取電平的功能
二.GPIO功能框圖
保護二極管
芯片的引腳電平0~3.3V,部分引腳可以5V,引腳的兩個保護二級管可以防止引腳外部過高或過低的電壓輸入
1.當引腳電壓高于VDD 時,上方的二極管導通
防止過高電壓進入芯片內部燒壞芯片
2.當引腳電壓低于 VSS 時,下方的二極管導通
防止電壓過低,從芯片內部汲取電流
施密特觸發器
具有濾波的作用,就是讓通過的電平輸出穩定的高低電平
三.GPIO的8種工作模式
1.浮空,上拉,下拉輸入
在輸入模式時,施密特觸發器打開,輸出被禁止,可通過輸入數據寄存器 GPIOx_IDR讀取 I/O 狀態。
由于電阻阻值很大這里的上拉下拉輸入都是弱上拉 弱下拉,為了對外部輸入產生很大的影響
上拉輸入:給一個默認的高電平也就是說當沒有外部輸入時默認輸入高電平
下拉輸入:給一個默認的低電平也就是說當沒有外部輸入時默認輸入低電平
浮空輸入:如果輸入引腳啥都不接,此時輸入電平極易受外界的干擾導致輸入電平不確定,完全由外部的輸入決定。
2.模擬輸入
這模式主要為片上外設ADC而配置,從外部讀取模擬信號
模擬信號:測試信號未經過采樣前,均是時間和幅值均是連續的信號稱為模擬信號,例如連續變化的電壓,電流,溫度等等。
數字信號:模擬信號經等間隔“采樣”及幅值量化以后,時間和幅值均是不連續的(離散)的信號,例如0 /1
這里不需要經過施密特濾波,人家本來就要連續變化的模擬量
3.推挽和開漏輸出
● 施密特觸發輸入被激活
● 弱上拉和下拉電阻被禁止
● 出現在I/O腳上的數據在每個APB2時鐘被采樣到輸入數據寄存器
● 在開漏模式時,對輸入數據寄存器的讀訪問可得到I/O狀態
● 在推挽式模式時,對輸出數據寄存器的讀訪問得到最后一次寫的值
除了模擬輸入的這種模式會關閉數字輸入功能其他七種模式,都可以通過輸入寄存器讀取I/O狀態,例:在模擬I2C實驗中把GPIO的工作模式配置為開漏輸出時同時也可以讀取引腳電平狀態,現在不知道不要緊后面會詳細講解
在輸出模式中,推挽模式時雙 MOS 管以輪流方式工作,輸出數據寄存器 GPIOx_ODR可控制 I/O 輸出高低電平。開漏模式時,只有 N-MOS 管工作,輸出數據寄存器可控制 I/O輸出高阻態或低電平。
1.推挽輸出
當輸出寄存器輸出高電平,則引腳也輸出高電平
當輸出寄存器輸出低電平,則引腳也輸出低電平
2.開漏輸出
當輸出寄存器輸出高電平,則引腳輸出高阻態
當輸出寄存器輸出低電平,則引腳輸出低電平
4.復用功能推挽開漏輸出
復用功能模式中,輸出使能,輸出速度可配置,可工作在開漏及推挽模式, 但是輸出信號源于其它外設
輸出數據寄存器 GPIOx_ODR 無效;輸入可用,通過輸入數據寄存器可獲取 I/O 實際狀態,但一般直接用外設的寄存器來獲取該數據信號
這里以串口的發送TX和接收RX引腳為例
串口的發送引腳TX
串口的接收引腳RX
這里串口外設不知道是什么不要緊,以后會細講只要指到復用功能的推挽與開漏輸出與普通的推挽與開漏輸出只是輸出的寄存器換成外設的寄存器
四.GPIO的寄存器
通過對 GPIO 寄存器寫入不同的參數,就可以改變 GPIO 的工作模式,要了解具體寄存器時一定要查閱《STM32F10X-中文參考手冊》中對應外設的寄存器說明。
端口配置低寄存器
在 GPIO 外設中,控制端口高低控制寄存器 CRH 和 CRL 可以配置每個 GPIO 的工作模式和工作的速度,每 4 個位控制一個 IO,CRH 控制端口的高八位,CRL 控制端口的低 8 位,具體的看 CRH 和 CRL 的寄存器描述
端口配置低寄存器
端口輸出寄存器
端口位設置/清除寄存器
端口位清除寄存器
端口位清除寄存器
總結
大家一定要把八種GPIO的模式都弄清楚原理,為后面學習打下堅實的基礎,本文就到這里。
來源:https://blog.csdn.net/k666499436/article/details/123845466
-
STM32
+關注
關注
2270文章
10895瀏覽量
355740 -
端口
+關注
關注
4文章
963瀏覽量
32051 -
引腳
+關注
關注
16文章
1193瀏覽量
50412 -
GPIO
+關注
關注
16文章
1204瀏覽量
52052
原文標題:拒絕枯燥繁瑣!詳解STM32-GPIO端口的八種工作模式 這次真的學會了
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論