GPIO中的相关寄存器

时间:2024-03-17 08:11:29


对于GPIO具体的工作方式,转载一篇博客。
[转] 【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图).

GPIO中的寄存器

一个端口模式寄存器(GPIOx_MODER)
一个端口输出类型寄存器(GPIOx_OTYPER)
一个端口输出速度寄存器(GPIOx_OSPEEDR)
一个端口上拉下拉寄存器(GPIOx_PUPDR)
一个端口输入数据寄存器(GPIOx_IDR)
一个端口输出数据寄存器(GPIOx_ODR)
一个端口置位/复位寄存器(GPIOx_BSRR)
一个端口配置锁存寄存器(GPIOx_LCKR)
两个复用功能寄存器(低位GPIOx_AFRL& GPIOx_AFRH)

具体配置

1. 端口模式寄存器(GPIOx_MODER)

该寄存器有32位,每2位控制一个IO口
GPIO中的相关寄存器

2.端口输出类型寄存器(GPIOx_OTYPER)

只用到低16位,1位控制一个IO
GPIO中的相关寄存器

3.端口输出速度寄存器 (GPIOx_OSPEEDR)

同理,也是两位配置一个IO
GPIO中的相关寄存器

4. 端口上拉/下拉寄存器 (GPIOx_PUPDR)

同上面一样,不再赘述。
GPIO中的相关寄存器

5. 端口输入数据寄存器 (GPIOx_IDR)

低16位,只读,读取IO状态
GPIO中的相关寄存器

6. 端口输出数据寄存器 (GPIOx_ODR)

低16位,设置1输出高电平,设置2输出低电平
GPIO中的相关寄存器

7. 端口置位/复位寄存器 (GPIOx_BSRR)

高16位,写1复位,低16位,写1置位
GPIO中的相关寄存器

8. 端口配置锁定寄存器 (GPIOx_LCKR)

不太了解
GPIO中的相关寄存器

9. 复用功能低位寄存器 (GPIOx_AFRL)

用于引脚复用,4位控制
AFL0 - AFL7和GPIOx0 - GPIOx7一一对应
GPIO中的相关寄存器

10. 复用功能高位寄存器 (GPIOx_AFRH)

用于引脚复用,4位控制
AFH8 - AFH15和GPIOx8 - GPIOx15一一对应
GPIO中的相关寄存器
IO口的复用功能可以查询 “数据手册”复用表Table9

复用表
GPIO中的相关寄存器
e.g.
GPIOA9、GPIOA10分别对应:
GPIOA->AFR[1] |= 7<<4;
GPIOA->AFR[1] |= 7<<8
7表示AF7,为复用数据,4和8表示复用GPIO的引脚位置

时钟使能

由于截图空间有限,只截取了部分,具体请参考STM32F4xx中文参考手册6.3.12

位0 - 8是使能相关GPIO时钟,GPIOA-GPIOI,置1使能
GPIO中的相关寄存器

小结

本文仅对相关寄存器进行说明,欢迎指正。