STM32HAL库开发笔记-GPIO输入

目录

一,配置GPIO的输入​

[二,STM32 GPIO 输入输出模式总结](#二,STM32 GPIO 输入输出模式总结)

[一、输入模式(4 种:核心是 "检测外部电平")](#一、输入模式(4 种:核心是 “检测外部电平”))

[二、输出模式(2 种:核心是 "向外输出电平")](#二、输出模式(2 种:核心是 “向外输出电平”))

[三、复用功能模式(2 种:核心是 "交给外设控制")](#三、复用功能模式(2 种:核心是 “交给外设控制”))

四、模拟模式(特殊:非数字信号)

五、核心总结与选型速记


一,配置GPIO的输入

按照自己的板子的实际情况选择引脚配置

这里在gpio.c里面可以看到也已经自动生成好了

关于GPIO读取引脚电平的函数也是有支持的

在主函数写一个简单的电平读取并在LED输出电平的代码


二,STM32 GPIO 输入输出模式总结

STM32 的 GPIO(通用输入输出口)模式可分为输入模式、输出模式、复用功能模式、模拟模式四大类,核心是根据 "引脚要检测信号、输出信号,还是作为外设专用引脚 / 模拟信号通道" 来选择,下面用通俗的方式讲清每种模式的特点、用途和选型逻辑:

1、输入模式(4 种:核心是 "检测外部电平")

输入模式下,GPIO 引脚仅负责采集外部电平信号,不向外输出电流,核心分 4 种:

模式类型 核心原理 关键特点 典型用途
浮空输入 引脚悬空时电平不确定(受电磁干扰),仅在外部有电平驱动时能检测信号 高阻态,无默认电平 USART/RX 引脚、红外接收等(外部有明确信号源)
上拉输入 内部集成上拉电阻(几十 kΩ),引脚悬空时默认高电平,外部低电平可拉低 有默认高电平,抗干扰性好 按键检测(按下接地为低,松开为高)、传感器状态检测
下拉输入 内部集成下拉电阻,引脚悬空时默认低电平,外部高电平可拉高 有默认低电平,抗干扰性好 需默认低电平的状态检测(如高电平有效的传感器)
模拟输入 引脚与数字电路完全断开,直接连接模拟电路(如 ADC) 不参与数字逻辑,仅传模拟信号 ADC 电压采样、温度传感器模拟信号输入

选型小技巧:有默认电平需求选上拉 / 下拉,外部信号明确选浮空,要采模拟信号选模拟输入。

2、输出模式(2 种:核心是 "向外输出电平")

输出模式下,GPIO 引脚负责主动输出高低电平 ,核心分推挽和开漏,且都可配置输出速度(低速 / 中速 / 高速 / 超高速,对应不同驱动能力和电磁干扰):

模式类型 核心原理 关键特点 典型用途
推挽输出 内部有上下两个 MOS 管,一个导通一个截止:输出高电平时上管导通拉电流,输出低电平时下管导通灌电流 能主动输出高 / 低电平,驱动能力强(可直接带 LED、小型继电器) LED 灯控制、普通电平信号输出、电机驱动信号
开漏输出 内部只有下拉 MOS 管,无上限管:输出低电平时管子导通拉低电平,输出高电平时管子截止(需外部上拉电阻才会有高电平) 支持 "线与"(多个开漏引脚接一起,一个低电平则总线低);可实现 3.3V/5V 电平兼容(外部接 5V 上拉即可输出 5V) I2C 总线 SDA/SCL 引脚、CAN 总线、多设备共享总线

选型小技巧:普通电平输出选推挽,总线通信(如 I2C)或需要电平转换选开漏。

3、复用功能模式(2 种:核心是 "交给外设控制")

当 GPIO 需要作为外设的专用引脚(如串口 TX/RX、SPI MOSI、TIM PWM)时使用,引脚的控制权从 CPU 交给外设,本质是 "外设的输入输出":

模式类型 适用场景 典型例子
复用推挽 外设需要主动输出高 / 低电平(如发送信号) USART TX 引脚、SPI MOSI 引脚、TIM PWM 输出
复用开漏 外设需要线与功能或电平兼容 I2C 的 SDA/SCL 引脚、部分串口 RX 引脚

4、模拟模式(特殊:非数字信号)

和 "模拟输入" 不同,模拟模式是 GPIO 引脚完全脱离数字电路,既不检测数字电平,也不输出数字信号,仅作为模拟信号的通道,比如:

  • ADC 的输入通道(采集模拟电压);
  • DAC 的输出通道(输出模拟电压);
  • 比较器的输入引脚。

5、核心总结与选型速记

  1. 输入选什么?:按键 / 传感器→上拉 / 下拉;串口 RX→浮空;ADC 采样→模拟输入。
  2. 输出选什么?:LED / 普通信号→推挽;I2C/CAN→开漏(需外部上拉)。
  3. 外设引脚选什么?:看外设手册(如串口 TX 用复用推挽,I2C 用复用开漏)。
  4. 速度怎么选?:LED→低速,串口→中速,SPI→高速,高速外设→超高速(速度越高,EMI 越大,按需选择即可)。
相关推荐
chinalihuanyu2 小时前
蓝牙开发笔记(BlueTooth,BLE,CH592)
笔记
其美杰布-富贵-李2 小时前
tsai 中 Learner 机制深度学习笔记
人工智能·笔记·深度学习
硅农深芯2 小时前
什么时候要用开漏输出(open drain output)?
单片机·嵌入式硬件·gpio·开漏输出·open drain
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [fs]dcache
linux·数据库·笔记·学习·ubuntu
小智RE0-走在路上3 小时前
Python学习笔记(7)--集合,字典,数据容器总结
笔记·python·学习
电子工程师-C513 小时前
基于51单片机的家居环境监测系统
单片机·嵌入式硬件·51单片机
Big_潘大师4 小时前
十轴IMU模块-AHRS角度姿态、加速度计、磁力计、气压陀螺仪传感器
stm32·单片机·嵌入式硬件·arduino·陀螺仪
map_vis_3d4 小时前
JSAPIThree 加载单体三维模型学习笔记:SimpleModel 简易加载方式
笔记·学习·3d
Lv11770085 小时前
Visual Studio 中的密封类和静态类
ide·笔记·c#·visual studio