STM32的IO口模式配置
根據數據手冊提供的信息,stm32的io口一共有八種模式,他們分別是:
四種輸入模式
- 上拉輸入:通過內部的上拉電阻將一個不確定的信號通過一個電阻拉到高電平。
- 下拉輸入:把電壓拉到GND。與上拉原理相似。
- 浮空輸入:引腳內部什么都不接,處於浮空模式下,電平狀態是不確定的。外部信號輸入什么,IO口就是什么狀態。
- 模擬輸入:接收到的是連續的模擬信號,一般用於AD轉換。
四種輸出模式
- 推挽輸出:可以輸出高低電平,連接數字器件。在stm32中推挽電路由兩個MOS管組成:輸出高電平時P-MOS管導通,引腳聯通VDD(3.3v)。輸出低電平時N-MOS導通,引腳聯通GND。**該方式既提高電路的負載能力,又提高開關速度。 **
- 開漏輸出:無法直接輸出高電平,要在外部連接上拉電阻才行,輸出的電壓由上拉電阻連接的電源決定。適合做電流型的驅動,其吸收電流的能力相對強(一般20ma以內)。開漏輸出還有一個特性:線與。即很多開漏模式引腳連接在一起,只有當所有引腳都輸出1時,才能夠被上拉電阻拉到高電平。若有一個引腳為低電平,則所有引腳相當於接地。
- 復用推挽輸出:簡單來說就是給內部外設使用的推挽輸出模式,
- 復用開漏輸出:簡單來說就是給內部外設使用的開漏輸出模式
在STM32中,根據不同的使用場景,選用不同的IO模式:
- GPIO_Mode_AIN: 模擬輸入,一般用作模數轉換
- GPIO_Mode_IN_FLOATING: 浮空輸入,常用在key識別上
- **GPIO_Mode_IPD: **下拉輸入--- IO內部下拉電阻輸入
- GPIO_Mode_IPU:上拉輸入--- IO內部上拉電阻輸入
- GPIO_Mode_Out_OD: 開漏輸出---可以外接上拉電阻輸出較高的電平,也能夠通過讀取IO的電平變化實現C51的IO雙向功能。
- **GPIO_Mode_Out_PP: **推挽輸出---IO輸出0-接GND,IO輸出1 -接VCC,讀輸入值是未知的。
- GPIO_Mode_AF_OD:復用開漏輸出---片內外設功能(TX1,MOSI,MISO.SCK.SS)。
- GPIO_Mode_AF_PP: 復用推挽輸出---片內外設功能(I2C的SCL,SDA)。
根據下面的IO結構圖可能更有利於理解: