STM32 GPIO的8種工作模式及相關配置暫存器
GPIO八種工作模式
四種輸入:
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這些需要線與功能的,就使用複用開漏輸出
GPIO相關配置暫存器
每組GPIO埠的暫存器包括:
- 一個埠模式暫存器(GPIOx_MODER)
- 一個埠輸出型別暫存器(GPIOx_OTYPER)
- 一個埠輸出速度暫存器(GPIOx_OSPEEDR)
- 一個埠上拉下拉暫存器(GPIOx_PUPDR)
- 一個埠輸入資料暫存器(GPIOx_IDR)
- 一個埠輸出資料暫存器(GPIOx_ODR)
- 一個埠置位/復位暫存器(GPIOx_BSRR)
- 一個埠配置鎖存暫存器(GPIOx_LCKR)
- 兩個復位功能暫存器(低位GPIOx_AFRL & GPIOx_AFRH)
如果配置一個IO口需要2個位,那麼剛好32位暫存器配置一組IO口16個IO口
如果配置一個IO口只需要1個位,一般高16位保留
BSRR暫存器32位分為低16位BSRRL和高16位BSRRH,BSRRL配置一組IO口的16個IO口的置位狀態(1),BSRRH配置復位狀態(0)。
相關文章
- STM32 GPIO 暫存器的配置
- 不到2000字,輕鬆帶你搞懂STM32中GPIO的8種工作模式模式
- 【STM32】【暫存器】暫存器位讀寫方式配置系統時鐘
- 明解STM32—GPIO理論基礎知識篇之暫存器原理
- Arduino庫和STM32的暫存器、標準庫、HAL庫、LL庫開發比較之GPIOUI
- STM32暫存器操作、模板構建
- 關於STM32的BSRR(埠位設定/清除暫存器) 和 BRR(埠位清除暫存器) 的理解(初學32)
- 十一假期淦了八天暫存器的相關知識
- STM32暫存器的本質到底是什麼???
- CS 暫存器 和 IP 暫存器
- 【STC8H】STC8系列專有的特殊的暫存器位——PW_2暫存器的最高位 EAXFR
- 暫存器
- 8分鐘動畫影片帶你直觀瞭解STM32 GPIO介面工作原理,內容很乾!GPIO是什麼?能用來做什麼?八種工作模式,推輓輸出和開漏輸出的區別動畫模式
- 暫存器定址和暫存器間接定址的區別
- 程式分析與優化 - 8 暫存器分配優化
- PC暫存器
- 例項七— 8位移位暫存器的設計
- Git工作區和暫存區Git
- 明解STM32—GPIO應用設計篇之API函式及配置使用技巧API函式
- 函式呼叫暫存器及棧幀結構函式
- 為什麼Modbus的只讀暫存器被稱為“輸入暫存器(Input Registers)”而不是“輸出暫存器”
- STM32 GPIO基本結構
- GPIO模式模式
- 各種相關的圖結構-定義及相關研究進展
- CPU 中通用暫存器的作用
- STM32學習筆記——GPIO筆記
- 儲存容量及相關計算單位
- mac下安裝nginx及相關配置MacNginx
- linux系統配置及相關檔案Linux
- nginx-k8s 相關配置詳解NginxK8S
- Spartacus i18n 配置相關程式碼的工作原理
- 組合語言學習筆記03——暫存器(CPU工作原理)組合語言筆記
- 程式設計中暫存器的使用程式設計
- stm32 use of undeclared identifier GPIO_InitTypeDefIDE
- CS、IP和PC暫存器
- Web伺服器的工作原理及其相關協議Web伺服器協議
- Cortex-A8支援哪兩種儲存模式模式
- 【STM32微控制器學習】第四課:GPIO控制LED