基于STM32F103C8T6(HAL库)和CubeMX入门的一些GPIO配置详解:IO口、电平、寄存器与上下拉电阻

1. 什么是GPIO(IO口)?

  • GPIO(General Purpose Input/Output)即通用输入输出引脚,是芯片与外部设备交互的接口。

  • 输入模式:用于读取外部信号(如按键状态、传感器数据)。

  • 输出模式:用于控制外部设备(如点亮LED、驱动继电器)。 

GPIO的工作模式(CubeMX配置选项)

模式类型功能描述
输入模式
- 浮空输入引脚电平完全由外部电路决定,无内部上拉或下拉(易受干扰)。
- 上拉输入内部上拉电阻将引脚默认拉至高电平(3.3V)。
- 下拉输入内部下拉电阻将引脚默认拉至低电平(0V)。
输出模式
- 推挽输出可输出高/低电平,驱动能力强(常用驱动LED)。
- 开漏输出可输出高/低电平,输出高电平时需外接上拉电阻,适合电平转换或总线通信(如I2C)。
复用功能GPIO用作其他外设接口(如USART、SPI),需在CubeMX中配置复用功能模式。

2. GPIO的高低电平详解

  • 高电平:我们经常配置GPIO口为SET(1),即通常为将IO口置电压为3.3V(取决于芯片供电电压VDD),最低有效电压(VIH)约为2.0V

  • 低电平:我们配置GPIO口为RESET(0),通常将IO口置电压为0V,最高有效电压(VIL)约为1.0V

3. GPIO寄存器操作与位运算

关键寄存器

寄存器名称功能描述
GPIOx_ODR输出数据寄存器,直接控制引脚输出电平(1=高,0=低)。
GPIOx_IDR输入数据寄存器,读取引脚当前电平状态。
GPIOx_BSRR位设置/清除寄存器,可原子操作(如PA0置高:BSRR = 0x00000001)。

位操作示例

  • GPIOA的PA0~PA15对应寄存器位0~15(二进制从右到左):

    • PA0:0b0000 0000 0000 0001(十六进制0x0001

    • PA1:0b0000 0000 0000 0010(十六进制0x0002

    • 依此类推,PA15为0x8000

 一般GPIO口都是0x0001代表GPIOx_PIN_0,0x8000代表GPIOx_PIN_15,

 我们就可以将GPIOx_PIN_y表示成1<<y(<<是左移)。

4. 上下拉电阻的作用与配置

  • 上拉电阻:默认将引脚拉至高电平,避免悬空时的随机干扰(如按键接地时配置上拉)。

  • 下拉电阻:默认将引脚拉至低电平,避免悬空时的误触发(如按键接电源时配置下拉)。

类型作用典型连接方式示例场景
上拉电阻确保默认高电平信号线 → 电阻 → 电源按键、开漏输出
下拉电阻确保默认低电平信号线 → 电阻 → GND传感器输入、复位电路
限流电阻限制电流,保护元件电源 → 电阻 → LED → GNDLED驱动、电机控制

如图PA15是上拉电阻,PA12是下拉电阻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值