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