STM32 GPIO 8種工作方式

在上一篇博客中有說過GPIO的工作模式是需要自己根據項目硬件需求配置的,分別是4種輸出,4種輸入 
這8種工作模式的定義都可以在庫裏面找到定義

四種輸入: 
GPIO_Mode_IPU(上拉輸入) 
GPIO_Mode_IPD(下拉輸入) 
簡述原理: 
經過上拉開關和下拉開關的連接,再經過觸發器轉化爲0,1的數字信號,存儲到數據寄存器中,然後我們就可以通過配置寄存器CRL,CRH控制這兩個開關。 
簡述用法: 
若GPIO引腳配置爲上拉輸入模式,在默認狀態下(GPIO引腳無輸入),取得的GPIO引腳數據爲1,既高電平. 
而下拉輸入模式則是相反的,在默認狀態下其引腳數據爲0,低電平.

GPIO_Mode_IN_FLOATING(浮空輸入) 
簡述原理: 
不接上拉和下拉開關,直接經由觸發器輸入. 
簡述用法: 
若配置成這個模式可以用電錶測量其引腳電壓是1點幾伏(不確定的值).由於輸入阻抗較大,一般把這種模式用於標準的通訊協議例如:I2C,USART的接收端.

GPIO_Mode_AIN(模擬輸入) (其實這個比較好懂,就是要用到電壓採集的時候一般都是這個模式) 
簡述原理: 
直接關閉觸發器,不接上拉和下拉開關,由另一路開關傳至片上外設模塊. 
簡述用法: 
例如傳送至ADC模塊時,就由ADC採集電壓信號.(使用ADC外設的時候,必須是設置爲模擬輸入模式).

四種輸出: 
GPIO_Mode_Out_PP(普通推輓輸出) 
簡述原理: 
經過一個由P_MOS和N_MOS管組成的單元電路.輸出高電平(3.3V)時,P_MOS導通,低電平(0V)時,N_MOS導通(兩個管子輪流導通,一個進電流,一個拉電流.這樣它的負載能力和開關速度都比普通方式有大的提高) 
簡述用法: 
一般都是應用在輸出電平爲0和3.3V的場合.

GPIO_Mode_Out_OD(普通開漏輸出) 
簡述原理: 
在輸出0時,既高電平,則N_MOS管導通,使輸出接地.在輸出1時,則不輸出高電平也不輸出低電平(無法輸出高電平,本身爲高阻態).所以在使用的時候,必須在外部接上一個上拉電阻並且開漏輸出模式具有”線與”的特性,既有很多開漏模式的引腳接到一起時,只有在所有引腳都處於高阻態的時候,纔會輸出高電平.(電壓是外部上拉電阻所接電源的電壓).只要其中一個引腳是低電平,那麼整個線路都等於短路接地(低電平),電壓是0V.(只要是開漏輸出模式,都必須接上拉電阻) 
簡述用法: 
一般應用在電平不匹配的場合,如需要輸出5V的高電平,就需要在外部接上一個上拉電阻,電源爲5V.這時在輸出高組態的時候,就會由上拉電阻和電源向外輸出5V.

GPIO_Mode_AF_PP(複用推輓輸出) 
GPIO_Mode_AF_OD(複用開漏輸出) 
簡述原理: 
同上. 
簡述用法: 
對於複用模式,一般都是由GPIO的複用功能來選擇的(比如一個IO引腳可以做一般輸入輸出,同時還是串口輸出腳,這就是複用) 
例如:GPIO的引腳用作串口的輸出,就可以使用複用推輓輸出模式了.如果是用在I2C,SMBUS這些需要線與功能的,就使用複用開漏輸出

附上工作模式原理圖,想具體瞭解的朋友可以看着原理圖對照我上面所說的,一步步看,最右邊的爲IO引腳

PS:附上工作模式原理圖,想具體瞭解的朋友可以看着原理圖對照我上面所說的,一步步看,最右邊的爲IO引腳

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章