打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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

            先进先出寄存器

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【嵌入式】STM32学习(3)——GPIO的8种工作方式及相关寄存器说明
GPIO内部结构及工作原理
使用BSRR和BRR寄存器直接操作STM32的I/O端口
从自定义的库函数到STM32官方标准库
从51到ARM,献给浮躁的你---初学嵌入式
STM32-GPIO模式+寄存器点灯
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服