GPIO是什么
GPIO是通用輸入輸出端口的簡稱,簡單來說就是STM32可控制的引腳,STM32芯片的GPIO引腳與外部設備連接起來,從而實現與外部通訊、控制以及數據采集的功能。
STM32芯片的GPIO被分成很多組,每組有16個引腳,如型號為STM32F103ZET6型號的芯片有GPIOA、GPIOB、GPIOC至GPIOG共7組GPIO,芯片一共144個引腳,其中GPIO就占了一大部分,所有的GPlO引腳都有基本的輸入輸出功能。
最基本的輸出功能是由STM32控制引腳輸出高、低電平,實現開關控制,如把GPIO引腳接入到LED燈,那就可以控制LED燈的亮滅,引腳接入到繼電器或三極管,那就可以通過繼電器或三極管控制外部大功率電路的通斷。
最基本的輸入功能是檢測外部輸入電平,如把GPIO引腳連接到按鍵,通過電平高低區分按鍵是否被按下。
點亮PB0 LED:
GPIO功能框圖
每個GPI/O端口有兩個32位配置寄存器(GPIOX-CRL,GPIOx-CRH),兩個32位數據寄存器(GPIOxIDR和GPIOX-ODR),一個32位置位/復位寄存器(GPIOx-BSRR),一個16位復位寄存器(GPIOx-BRR)和一個32位鎖定寄存器(GPIOX-LCKR).
根據數據手冊中列出的每個I/O端口的特定硬件特征,GPIO端口的每個位可以由軟件分別配置成多種模式:
輸入浮空
輸入上拉
輸入下拉
模擬輸入
開漏輸出
推挽式輸出
推挽式復用功能
開漏復用功能
每個I/O端口位可以自由編程,然而I/O端口寄存器必須按32位字被訪問(不允許半字或字節訪問),GPIOx-BSRR和GPIOxBRR寄存器允許對任何GPIO寄存器的讀/更改的獨立訪問;這樣,在讀和更改訪間之間產生IRQ時不會發生危險。
圖上除了I/O引腳我們能在芯片外部看到,其余部分都在芯片內部
1:保護模塊:當I/O引腳輸入正電壓大于VDD,電流就會流向VDD不會流進芯片內部,從而保護電路(遠大于VDD時二極管會燒壞,因此不能將引腳直接接電極,要用電機驅動),反之輸入負電壓超過VSS時,電流就會從VSS往外流。
2:推挽、開漏或關閉:用以下兩個寄存器配置,每4個位控制一個GPIO,配置輸入輸出的各種模式(右上的上拉下拉開關也是用這個寄存器設置的:10)。
簡化電路圖:
當INT輸入為1,取反后為0,上方的Ug
當INT輸入為0,取反后為1,上方的Ug=Us,VDD3.3V電流流向Ug,VDD與OUT斷開;下方的Ug>Us,GND與OUT導通,OUT電流流向GND。
可以輸出高低電平,用于連接數字器件,高電平由VDD決定,低電平由VSS決定。
推挽結構指兩個三極管受兩路互補的信號控制,總是在一個導通的時候另外一個截止,優點開關效率效率高,電流大,驅動能力強。
輸出高電平時,電流輸出到負載,叫灌電流,可以理解成推,輸出低電平時,負載電流流向芯片,叫拉電流,即挽。
開漏輸出一般只能輸出低電平,想輸出高電平要另外加上拉電阻,而且此時NMOS處于截止狀態(當INT為1時)
輸出高電平時,VDD如果是3.3V,OUT就輸出3.3V,VDD如果是5V,OUT就輸出5V
只能輸出低電平,不能輸出高電平。
如果要輸出高電平,則需要外接上拉。
開漏輸出具有"線與"功能,一個為低,全部為低,多用于I2C和SMBUS總線。
3:輸出數據寄存器:用以下寄存器配置,可以直接設置ODR,也可以先設置BSRR,最后ODR會被更改。
(右上的上拉下拉開關也是用這個BSRR寄存器設置的)
4:復用功能輸出:用外設輸出時(例如串口),第3部分就沒用了。
5:輸入數據寄存器:讀出引腳數據
6:復用功能輸入:外設引腳輸入。
GPIO輸出初始化順序
1、選定具體的GPIO
點亮B0 LED
2、配置GPIO工作模式(CRL和CRH寄存器)
3、控制GPIO輸出高低電平(ODR,BRR和BSRR)
編輯:hfy
-
led
+關注
關注
242文章
23277瀏覽量
660887 -
三極管
+關注
關注
142文章
3611瀏覽量
121925 -
繼電器
+關注
關注
132文章
5349瀏覽量
148915 -
GPIO
+關注
關注
16文章
1204瀏覽量
52100
發布評論請先 登錄
相關推薦
評論