无线电爱好网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

STM32学习GPIO之设计篇

2025-4-17 09:36| 发布者: 闪电| 查看: 1| 评论: 0

摘要: 今日分享 GPIO 结合寄存器以及硬件电路,再来举例子分析输入输出。寄存器介绍:通过寄存器的位标注 rw,我们可知这个寄存器的某个位是可读(r)并且可写 的(w),我们也可以通过读寄存器里面的值得到引脚的配置信息, ...

今日分享 GPIO 结合寄存器以及硬件电路,再来举例子分析输入输出。

寄存器介绍:

通过寄存器的位标注 rw,我们可知这个寄存器的某个位是可读(r)并且可写 的(w),我们也可以通过读寄存器里面的值得到引脚的配置信息,如果寄存器的 位标注只有 r 或者 w,那么就代表这个寄存器的这个位只能进行读(r)或者写(w)

复位后 IO 口寄存器的值每一位可能不都是一样的,也就是说复位后 IO 口的 状态、工作模式等不完全相同,一定要注意

模式配置寄存器 GPIOx_MODER,右上角用蓝色圆圈标识的地方告诉我们 IO 口的复位值,可以看到复位后对于 A 组 IO 口来说初始值 0XA8000000,对于 B 组 IO 口初始值为 0x00000280,其他组 IO 口都是 0。该寄存器共 32 位,每 2 个位 控制 1 个 IO

如图中左下角划蓝线的为第 0 位和第 1 位。通过往第 0 位写 0,第 1 位写 0 配置成 Input Mode(输入模式),通过往第 0 位写 0,第 1 位写 1 配置成 General purpose output Mode(普通输出模式),通过往第 0 位写 1,第 1 位写 0 配置 成 Alternate function Mode(复用功能模式),通过往第 0 位写 1,第 1 位写 1 配置成 Analog Mode(模拟模式)

例如我们要把这个寄存器第 0 位写 1,其他都写 0,表示如下:

GPIOA->MODER |= 0x00000001;

这就相当于把 A 组的 PA0 口配置成了普通输出模式,其他 IO 口配置成了输入模 式

GPIOx_OTYPER 寄存器用于控制 IO 的输出类型,仅用于输出模式,在输 入模式下不起作用。该寄存器低 16 位(第 0 位-第 15 位)有效,每一个位控制 一个 IO 口,根据往不同的位写 1(开漏输出)/写 0(推挽输出)来配置成不同的 输出模式。复位后,该寄存器值均为 0,即默认为推挽输出

例如我们往 A 组 IO 口的第 0 位写 1 那就将 PA0 成开漏输出模式:

GPIOA->OTYPER |= 0x00000001;

GPIOx_OSPEEDR 寄存器用于控制 IO 的输出速度,仅用于输出模式,在输 入模式下不起作用。该寄存器每 2 个位控制一个 IO 口,根据往不同的位写 1/ 清 0 不同的位来配置成不同的模式。复位后对于 A 口来说初始值为 0X0C000000, 对于 B 口初始值 0x000000C0,其他口都是 0

例如我们往 A 组 IO 口的第 0 位和第 1 位写 1 那就将 PA0 成高速输出模式: GPIOA->OSPEEDR |= 0x00000003;

GPIOx_PUPDR 寄存器用于控制 IO 的上拉/下拉,该寄存器每 2 个位控制 一个 IO 口, 用于设置上下拉,根据往不同的位写 1/清 0 不同的位来配置成不 同的模式。复位后对于 A 口来说初始值为 0X64000000,对于 B 口初始值 0x00000100,其他口都 0x0C000000

例如我们往 A 组 IO 口的第 0 位写 1 那就将 PA0 下拉模式: GPIOA->PUPDR |= 0x00000001;

GPIOx_ODR 寄存器是 IO 口的输出数据寄存器,寄存器低 16 位(第 0 位- 第 15 位)有效,寄存器每 1 个位控制一个 IO 口, 也就是这个里面位的状态 代表了单片机输出的状态,根据往不同的位写 1/清 0 不同的位来配置成不同的 模式。复位后都是 0

例如我们往 A 组 IO 口的第 0 位写 1 那 PA0 就输出高: GPIOA->0DR |= 0x00000001;

对于一些其他的寄存器大家可以去参考数据手册,按照上面讲述的方法去配 置

硬件设计:

图示LED灯部分我们用到了B组的2PIN(脚的简称)和4PIN, C组的15PIN, D 组的 8PIN, E 组的 8PIN 和 9PIN

LED 灯硬件的设计决定了 LED 灯的驱动方法,LED 灯相当于一个发光二 极管,如果单片机引脚输出高,则二极管的左边和右边电压相同,不亮,反之单 片机输出低,右边电压大于左边电压通过单片机内部电路形成回路点亮二极管, 那麽通过控制引脚输出的高低就控制了 LED 灯的亮灭


路过

雷人

握手

鲜花

鸡蛋

QQ|关于本站|小黑屋|Archiver|手机版|无线电爱好网 ( 粤ICP备15040352号 ) 无线电爱好技术交流5 无线电爱好技术交流1无线电爱好技术交流9开关电源讨论群LED照明应用、电源无线电爱好技术交流4无线电爱好技术交流8无线电爱好技术交流10无线电爱好技术交流11

粤公网安备 44030702001224号

GMT+8, 2025-4-17 09:36 , Processed in 0.187200 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

返回顶部