STM32单片机IO口编程秘籍:详解GPIO配置、读写和中断,玩转单片机输入输出
发布时间: 2024-07-02 11:09:17 阅读量: 265 订阅数: 122 

1. STM32单片机IO口基础**
STM32单片机IO口是与外界交互的重要接口,负责数据输入输出和控制外围设备。本章将介绍STM32单片机IO口的相关基础知识,包括IO口分类、引脚功能和IO口寄存器。
1.1 IO口分类
STM32单片机IO口分为普通IO口和特殊功能IO口。普通IO口可以作为通用输入输出引脚,而特殊功能IO口具有特定的功能,如定时器、串口、I2C等。
1.2 引脚功能
每个IO口引脚都可以配置为不同的功能,如输入、输出、推挽输出、开漏输出等。这些功能通过IO口寄存器进行配置。
2. GPIO配置与读写
2.1 GPIO配置原理
GPIO配置是STM32单片机IO口编程的基础,它决定了IO口的输入输出模式、速度和强度等属性。
2.1.1 GPIO模式选择
GPIO模式选择决定了IO口的输入输出方向。STM32单片机提供了多种GPIO模式,包括:
- 输入模式(Input):IO口作为输入端口,读取外部信号。
- 输出模式(Output):IO口作为输出端口,输出电平信号。
- 推挽输出模式(Push-Pull Output):IO口既可以输出高电平,也可以输出低电平。
- 开漏输出模式(Open-Drain Output):IO口只能输出低电平,需要外接上拉电阻才能输出高电平。
- 模拟输入模式(Analog Input):IO口作为模拟输入端口,可以读取模拟信号。
GPIO模式选择通过寄存器GPIOx_MODER
进行配置,其中x
表示GPIO端口号(A、B、C、D、E、F、G、H)。
- #define GPIOA_MODER ((volatile uint32_t*)0x40020000)
- // 配置GPIOA第0位为输入模式
- *GPIOA_MODER &= ~(3 << 0);
- *GPIOA_MODER |= (0 << 0);
2.1.2 GPIO速度和强度设置
GPIO速度和强度设置决定了IO口的驱动能力和抗干扰能力。STM32单片机提供了多种速度和强度设置,包括:
-
速度:
- 低速(2 MHz)
- 中速(10 MHz)
- 高速(50 MHz)
- 极高速(100 MHz)
-
强度:
- 弱强度
- 中等强度
- 强强度
GPIO速度和强度设置通过寄存器GPIOx_OSPEEDR
和GPIOx_PUPDR
进行配置,其中x
表示GPIO端口号(A、B、C、D、E、F、G、H)。
- #define GPIOA_OSPEEDR ((volatile uint32_t*)0x40020008)
- #define GPIOA_PUPDR ((volatile uint32_t*)0x4002000C)
- // 配置GPIOA第0位为高速、强强度输出
- *GPIOA_OSPEEDR |= (3 << 0);
- *GPIOA_PUPDR |= (1 << 0);
2.2 GPIO读写操作
GPIO读写操作是STM32单片机IO口编程的核心,它实现数据的输入输出。
2.2.1 GPIO输入读取
GPIO输入读取通过寄存器GPIOx_IDR
进行,其中x
表示GPIO端口号(A、B、C、D、E、F、G、H)。
- #define GPIOA_IDR ((volatile uint32_t*)0x40020010)
- // 读取GPIOA第0位输入电平
- uint32_t input_value = *GPIOA_IDR & (1 << 0);
2.2.2 GPIO输出控制
GPIO输出控制通过寄存器GPIOx_ODR
进行,其中x
表示GPIO端口号(A、B、C、D、E、F、G、H)。
- #define GPIOA_ODR ((volatile uint32_t*)0x40020014)
- // 设置GPIOA第0位输出高电平
- *GPIOA_ODR |= (1 << 0);
- // 设置G
0
0
相关推荐








