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 暫存器的配置
- 8.ARM工作模式和暫存器及異常模式
- 不到2000字,輕鬆帶你搞懂STM32中GPIO的8種工作模式模式
- 【STM32】【暫存器】暫存器位讀寫方式配置系統時鐘
- 明解STM32—GPIO理論基礎知識篇之暫存器原理
- STM32暫存器操作、模板構建
- Arduino庫和STM32的暫存器、標準庫、HAL庫、LL庫開發比較之GPIOUI
- 關於STM32的BSRR(埠位設定/清除暫存器) 和 BRR(埠位清除暫存器) 的理解(初學32)
- STM32暫存器的本質到底是什麼???
- 十一假期淦了八天暫存器的相關知識
- CS 暫存器 和 IP 暫存器
- Cisco 路由器暫存器配置[轉貼]路由器
- 暫存器
- 8分鐘動畫影片帶你直觀瞭解STM32 GPIO介面工作原理,內容很乾!GPIO是什麼?能用來做什麼?八種工作模式,推輓輸出和開漏輸出的區別動畫模式
- 程式分析與優化 - 8 暫存器分配優化
- 暫存器定址和暫存器間接定址的區別
- Vim使用進階:10種暫存器剖析
- sap入門--配置client的相關工作client
- WebDAV 配置及相關工具Web
- 明解STM32—GPIO應用設計篇之API函式及配置使用技巧API函式
- STM32 GPIO基本結構
- STM32 逐次逼近暫存器型(SAR)模擬數字轉換器(ADC)
- Git工作區和暫存區Git
- 函式呼叫暫存器及棧幀結構函式
- 為什麼Modbus的只讀暫存器被稱為“輸入暫存器(Input Registers)”而不是“輸出暫存器”
- GPIO模式模式
- STM32學習筆記——GPIO筆記
- EBS中form埠及servlet , socket模式問題及form相關配置檔案ORMServlet模式
- 各種相關的圖結構-定義及相關研究進展
- tls/ssl工作原理及相關技術TLS
- [ARM] ARM處理器的7種工作模式和2種工作狀態模式
- CUDA優化之執行配置和暫存器優化優化
- 關於Apache的兩種工作模式prefork和workerApache模式
- Git 工作區、暫存區和版本庫Git
- 【STM32微控制器學習】第四課:GPIO控制LED
- 儲存容量及相關計算單位
- mac下安裝nginx及相關配置MacNginx
- nginx-k8s 相關配置詳解NginxK8S