STM32的IO口的八种模式
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
先进先出寄存器