STM32的IO口可以由軟件配置成如下8種模式: 1、輸入浮空 2、輸入上拉 3、輸入下拉 4、模擬輸入 5、開漏輸出 6、推挽輸出 7、推挽式復用功能 8、開漏復用功能 每組IO口包含7個寄存器。 分別是 -GPIOx_CRL:端口配置低寄存器 -GPIOx_CRH:端口配置高寄存器 -GPIOx_IDR:端口輸入寄存器 -GPIOx_ODR:端口輸出寄存器 GPIOx_BSRR:端口位設置/清除寄存器 GPIOx_BRR:端口位清除寄存器 GPIOx_LCKR:端口配置鎖存寄存器 -注:x表示A-G 前四個重要一點,是要記住的!! 每個GPIO有16個IO口,每四位配置一個IO口的工作模式,因此需要64位來控制GPIO。而STM32是32位的,所以需要兩個寄存器來來一起控制。例如CRL和CRH,CRL控制低八位,CRH控制高八位。 GPIO:每個連接到I/O總線上的設備都有自己的I/O地址集,即所謂的I/O端口。類似51單片機的P0~P3,但與51單片機不同的是,對stm32的GPIO來說,使用前需要設置其工作方式。STM32的每個IO端口都有7個寄存器來控制其工作方式,而每一個寄存器都需要用32bit來控制。在STM32中,一組GPIO有16個IO口。 每個引腳用4位來配置,高兩位是CNF、低兩位是MODE. 要先看低兩位MODE,先看工作模式是輸入還是輸出。再看高兩位CNF,看是那種模式。這樣就可以通過四位來配置八種工作模式里的一種了,有點繞,但是很好理解哈。 該寄存器的復位值為0X44444444,復位值其實就是配置端口為浮空輸入模式。從上圖還可以得出:STM32的CRL控制著每組IO端口(A~G)的低8位的模式。每個IO端口的位占用CRL的4個位,高兩位為CNF,低兩位為 MODE。這里我們可以記住幾個常用的配置,比如0X0表示模擬輸入模式(ADC用)、0X3表示推挽輸出模式(做輸出口用,50M速率)、0X8表示上/下拉輸入模式(做輸入口用)、0XB表示復用輸出(使用IO口的第二功能,50M速率)。 當IO口被配置為0100,也就是上拉/下拉輸入模式的時候需要用ODR來判斷是上拉還是下拉模式。如果ODR為0則為下拉,為1則為上拉。 注:IDR和ODR只有低16位,**IDR只能讀出IO口對應的狀態,但ODR可讀可寫還可以分別對ODR的某一位進行獨立的設置和清除。 GPIOC->CRH&=0XFFF00FFF;//清掉這2個位原來的設置,同時也不影響其他位的設置 GPIOC->CRH|=0X00038000;//PC11輸入,PC12輸出 GPIOC->ODR=1<<11;//PC11上拉 現在再來看這句話,是不是就很好理解了呢 首先將GPIOC的11.12IO口清空,再給11配置位0100,即上拉下拉輸入模式。12配置位1000,即推挽輸出最大50M。(P.S.:11.12是倒著數的) 然后給ODR11個1,所以就是上拉模式. 好了,今天這個寄存器就介紹到這里吧. 補充:上拉電阻和下拉電阻二者共同的作用是:避免電壓的“懸浮”,造成電路的不穩定。 一、上拉電阻如圖所示: 1、概念:將一個不確定的信號,通過一個電阻與電源VCC相連,固定在高電平; 2、上拉是對器件注入電流,灌電流; 3、當一個接有上拉電阻的IO端口設置為輸入狀態時,它的常態為高電平。 二、下拉電阻如圖所示: 1、概念:將一個不確定的信號,通過一個電阻與地GND相連,固定在低電平; 2、下拉是從器件輸出電流,拉電流; 3、當一個接有下拉電阻的IO端口設置為輸入狀態時,它的常態為低電平。 補充資料 GPIO:通常用途輸入輸出端口 General-purpose input/output eCAP:增強捕獲儀端口 Enhanced Capture input/output CLA:Control Law Accelerator 規則控制加速器 PIE:Peripheral Interrupt Expansion 外設中斷擴展端 OTP:One-time programmable 單次寄存器 ePWM:增強脈寬調制模塊 Enhanced Pulse Width Modulator SCI:串口通訊端口 Serial Communications Interface SPI:串口外設端口 Serial Peripheral Interface eCAN:增強區域網絡控制器 Enhanced Controller Area Network LIN:Local Interconnect Network 本地互連網絡 I2C:Inter-Integrated-Circuit 總線 HRPWM:High-resolution PWM 高分辨脈寬調制 HRCAP:高分辨輸入捕獲器 High-Resolution Input Capture eQEP:增強正交編碼脈沖 Enhance Quadrature Encoder Pulse ADC:Analog-to-Digital Converter 模數轉換器 I:Input 輸入 O:Output 輸出 A:high Impedance 高阻抗 OD:Open Drain 開漏 JTAG:Joint Test Action Group 調試接口 TMS:test-mode select 測試模式選擇 TDI:test data input 測試數據輸入 TDO:test data output 測試數據輸出 TCK:test clock 測試時鐘 UART:通用異步收發器 Universal Asynchronous Receiver Transmitter USART:通用同步/異步收發器 Universal Synchronous/Asynchronous Receiver/Transmitter COMP:Comparator 比較器 VREG:Voltage Regulator 電壓調制器 TZ:Trip Zone 中斷區 IDLE:閑置 STANDBY:待機 HALT:停止 POR :Power-on reset 上電復位 BOR: Brown-out reset 斷電復位 FIFO:First Input First Output 先進先出寄存器 |
|
來自: TangMouXiong > 《電子知識》