@[TOC](Section 2_STM32 GPIO)
## 1.GPIO是什么
GPIO( general purpose intput output )是通用輸入輸出端口的簡稱,可以通過軟件來控制其輸入和輸出。STM32芯片的GPIO引腳與外部設備連接起來,從而實現與外部通訊、控制以及數據采集的功能。
## 2.STM32引腳分類
電源管腳
晶振管腳
復位管腳
下載管腳
BOOT管腳
GPIO管腳

## 3.如何查找GPIO功能
通過STM32F407芯片數據手冊即可查找


## 4.GPIO基本結構

## 5.GPIO工作模式
##### 輸入模式
###### 輸入浮空

###### 輸入上拉

###### 輸入下拉

###### 模擬輸入

##### 輸出模式
###### 開漏輸出

###### 開漏復用功能

###### 推挽式輸出

###### 推挽式復用功能

##### 總結
(1)推挽輸出
a.可以輸出高低電平,用于連接數字器件,高電平由VDD決定,低電平由VSS決定。
b.推挽結構指兩個三極管受兩路互補的信號控制,總是在一個導通的時候另外一個截止,優點開關效率效率高,電流大,驅動能力強。
c.輸出高電平時,電流輸出到負載,叫灌電流,可以理解成推,輸出低電平時,負載電流流向芯片,叫拉電流,即挽。
(2)開漏輸出
a.只能輸出低電平,不能輸出高電平。如果要輸出高電平,則需要外接上拉。
b.開漏輸出具有“線與”功能,一個為低,全部為低,多用于I2C和SMBUS總線。
## 6.GPIO初始化步驟
具體寄存器參考STM32F4中文參考手冊
(1)確定GPIO是輸入、通用輸出、復用功能還是模擬輸入(模式寄存器:MODER)
(2)如果輸出還要確定是推挽輸出還是開漏輸出(輸出類型寄存器 :OTYPER)
(3)配置輸出的速度(輸出速度寄存器:OSPEEDR)
(4)輸出的時候內部的上/下拉電阻要不要開啟(上拉/下拉寄存器:PUPDR)
(5)具體要輸出的內容(置位復位寄存器:BSRR和數據輸出寄存器:ODR)