本文以STM32F051K8U6为例,主要介绍GPIO寄存器特点及应用,以及CubeMX的配置和HAL库函数的使用。
GPIO接口简介
通用输入输出接口GPIO是嵌入式系统、单片机开发过程中最常用的接口,用户可以通过编程灵活的对接口进行控制,实现对电路板上LED、数码管、按键等常用设备控制驱动,也可以作为串口的数据收发管脚,或AD的接口等复用功能使用。因此其作用和功能是非常重要的。
SoC芯片上的单个引脚可以通过配置GPIO寄存器以实现多种不同的功能,这就是多路复用。下图是芯片上GPIOA这一组端口上的引脚复用功能示意。

STM32F051-GPIO常用寄存器
4个32位配置寄存器
GPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR GPIOx_PUPDR
2个32位数据寄存器
GPIOx_IDR 、GPIOx_ODR
1 个32 位置位 / 复位寄存器
GPIOx_BSRR
2 个 32 位复用功能配置寄存器
GPIOx_AFRH 、GPIOx_AFRL
注:每一组GPIO端口都有一套上述的寄存器去配置它自己的功能
MODER
GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..D,F),主要用于指定GPIO端口的工作模式。
MODER是32位寄存器,其中每两位对应一个引脚。对于每个GPIOx上的引脚y,存在位[2y+1:2y](y = 0...15),即MODERy[1:0],用于配置I/O口的工作模式,模式代码如下:
00:输入模式(复位状态)
01:通用输出模式
10:复用功能模式
11:模拟模式
OTYPER
GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..D,F),主要用于指定GPIO端口的输出类型。
OTYPER是32位寄存器,其中31:16为保留位,15:0为有效位,每一位二进制位对应一个引脚。对于每个GPIO上的引脚y,存在位[y](y = 0...15),即OTy,用于配置引脚的输出类型,类型代码如下:
0:推挽输出(复位状态)
1:开漏输出

如下图所示,若将输出类型设置为推挽输出模式,则不需要外接上(下)拉电阻,直接使用输出驱动器内部的互补信号输出

最低0.47元/天 解锁文章
908

被折叠的 条评论
为什么被折叠?



