stm32的八種gpio配置模式
gpio端口的每個位可以由軟體分别配置成多種模式
八種模式:
1、輸入浮空
2、輸入上拉
3、輸入下拉
4、模拟輸入#
5、開漏輸出
6、推挽輸出
7、推挽式複用功能
8、開漏複用功能
每個GPIO端口有
兩個32位配置寄存器 GPIOx_CRL_CRH。
兩個32位 資料寄存器 _IDR和_ODR。
一個32位置位/複位寄存器 _BSRR。
一個16位複位寄存器 _BRR。
一個32位 鎖定寄存器 _LCKR。
每個I/O端口位可以自由程式設計,然而I/0端口寄存器必須按32位字被通路(不允許半字或位元組訪
問)。GPIOx_BSRR和GPIOx_BRR寄存器允許對任何GPIO寄存器的讀/更改的獨立通路;這樣,在讀和更改通路之間産生IRQ時不會發生危險。

輸入模式
當I/O端口配置為輸入時:
1、輸出緩沖器被禁止
2、施密特出發輸入被激活
3、根據輸入配置(上拉,下拉或浮空)的不同,弱上拉和下拉電阻被連接配接
4、出現在I/O腳上的資料在每個APB2時鐘被采樣到輸入資料寄存器
5、對輸入資料寄存器的讀通路可得到I/O狀态
上拉輸出
下拉則是上圖打叉的vss導通 vdd斷開。
浮空則是兩者都斷開,這裡就不一一畫圖了。
模拟輸出:
當I/O端口被配置為模拟輸入配置時:
● 輸出緩沖器被禁止;
● 禁止施密特觸發輸入,實作了每個模拟I/O引腳上的零消耗。施密特觸發輸出值被強置為’0’;
● 弱上拉和下拉電阻被禁止;
● 讀取輸入資料寄存器時數值為’0’。
接下來是輸出模式
當I/O端口被配置為輸出時:
1.輸出緩沖器被激活
2.施密特觸發輸入被激活。
3.弱上拉和下拉電阻被禁止。
4.出現在I/O腳上的資料在每個APB2時鐘被采樣到輸入資料寄存器。
5.在開漏模式時,對輸入資料寄存器的讀通路可得到I/O狀态。
6.在推挽式模式時,對輸出資料寄存器的讀通路得到最後一次寫的值。
開漏輸出模式:
─ 開漏模式:輸出寄存器上的’0’激活N-MOS,而輸出寄存器上的’1’将端口置于高阻狀态(PMOS從不被激活)
開漏複用輸出:
它與開漏輸出的差別在于開漏複用輸出模式是來自于片上外設的信号
内置外設的信号驅動輸出緩沖器(複用功能輸出)
推挽輸出模式:
─ 推挽模式:輸出寄存器上的’0’激活N-MOS,而輸出寄存器上的’1’将激活P-MOS。
複用功能時:在推挽模式時,讀輸出資料寄存器時可得到最後一次寫的值。此處就不在貼圖了。