STM32的GPIO分析

GPIO介绍

STM32的每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能接口。多数GPIO引脚与数字或模拟的复用外设共用,除了具有模拟输入(ADC)功能的引脚之外,其他GPIO引脚都有大电流通过的能力,具体有8种模式:​

1、输入浮空(输入电平必须由外部电路确定,要根据具体电路,加外部上拉电阻或下拉电阻,可以做按键识别)​

2、输入上拉(打开I/O内部上拉电阻)​

3、输入下拉(打开I/O内部下拉电阻)​

4、模拟输入​

5、开漏输出(输出端相当于三极管的集电极,要想输出高电平必须外接上拉电阻,适合做电流型驱动)​

6、推挽式输出(可以输出高低电平和连接数字器件,推挽式输出的电阻小,带负载能量强)​

7、推挽式复用功能(复用指该引脚打开remap)​

8、开漏复用功能​​

基本结构图​

STM32的GPIO分析GPIO基本结构


STM32很多I/O口是5V兼容的,具体查阅技术手册(标注FT:five tolerant)有助于连接5V电平外设​

STM32每个I/O端口(16个引脚)都是由7个寄存器来控制的(具体到控制哪个引脚需要翻阅手册)​

GPIO的寄存器​

一、端口配置寄存器​

每个引脚占用4bit的配置寄存器,用来配置输入/输出以及模式速率。因此一个端口16个引脚对应两个32位寄存器。分别是GPIOx_CRL和GPIOx_CRL,分别对应低8位和高8位。4bit的高两位为CNF,低两位为MODE​​


STM32的GPIO分析CPIOx_CRL寄存器配置

-举例:我们配置PORT B12位为上拉输入,13位为推挽输出

GPIOB->CRH&=0xFF00FFFF;//清除这两位原来的设置

GPIOB->CRH|=0x00380000;//配置PB121000B,PB130011B

GPIOB->ODR=1<<12;     //1左移12位,相当于把1000000000000赋给GPIO_ODR,刚好对应PB12的输出位为1

 

二、端口输入(输出)数据寄存器

输入数据寄存器IDR和输出数据寄存器ODR都分别用了寄存器的低16位,只是IDR为只读,ODR可读可写。两个寄存器都是以字(两字节)模式访问而不能以bit模式访问。

STM32的GPIO分析端口输入数据寄存器

 

STM32的GPIO分析ODR

三、端口位设置/ 清除寄存器

STM32的GPIO分析BSRR

四、端口位清除寄存器 

STM32的GPIO分析端口位清除寄存器
STM32的GPIO分析端口位清除寄存器

五、端口配置锁定寄存器

STM32的GPIO分析端口配置锁定寄存器

六、复用功能I/O 和调试配置(AFIO) ​

为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上​

具体参考手册


 

 


。。。。。。。。。。。。。。。。。待续。。。。。。。。。。。。。。。。。。。。。。