STM32——GPIO介绍

server/2025/3/13 5:09:11/

        GPIO(General-Purpose IO ports,通用输入/输出接口)模块是STM32的外设接口的核心部分,用于感知外界信号(输入模式)和控制外部设备(输出模式),支持多种工作模式和配置选项。

1、GPIO 基本结构

        STM32F407 的每个 GPIO 引脚均可独立配置,主要特性包括:

  • 9 组 GPIO 端口(GPIOA ~ GPIOI),每组最多 16 个引脚(PIN0 ~ PIN15)。

  •  每个引脚可配置为输入、输出、复用功能或模拟模式。
  • 支持多种驱动模式(推挽、开漏)、速度等级和上下拉电阻。
  • 支持外部中断 / 事件触发。

        I/O 端口的基本结构 :

2、GPIO 工作模式

         每个引脚可通过 GPIOx_MODER 寄存器配置为以下模式:

/** * @brief  GPIO Configuration Mode enumeration */   
typedef enum
{ GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */
}GPIOMode_TypeDef;
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_Mode_IN)  || ((MODE) == GPIO_Mode_OUT) || \((MODE) == GPIO_Mode_AF)|| ((MODE) == GPIO_Mode_AN))

2.1、输入模式

2.1.1、浮空输入(Input Floating)

        引脚电平由外部电路决定,无内部上拉 / 下拉。上拉 / 下拉电阻为断开状态,施密特触发器打开,输出被禁止。输入浮空模式下,IO 口的电平完全是由外部电路决定的。如果 IO 引脚没有连接其他的设备,那么检测其输入电平是不确定的。

        浮空输入的特点:

  • 高阻态:引脚内部无上拉/下拉电阻,电平完全由外部电路决定。
  • 灵敏度高:易受外部信号或噪声影响,需确保外部电路有明确的驱动源。 
  • 低功耗:无内部电阻电流路径,适合低功耗场景(需外部电路稳定)。

        该模式典型应用场景:

1、外部中断(EXIT)

  • 场景:连接按键、传感器等需要触发中断的设备。
  • 原因:若外部电路已包含明确的上拉/下拉电阻(如按键电路),使用浮空输入可避免内部电阻的干扰。

2、 通信接口(如 IIC、UART)

  • 场景:IIC 的 SDA / SCL 线、UART 的 RX 引脚。
  • 原因:IIC 总线需外接上拉电阻,浮空输入避免内部电阻冲突;UART 接收端有外部设备驱动电平。

3、多设备总线(如 CAN、SPI)

  • 场景:总线型通信(如 CAN 总线、SPI 从设备 MISO)
  • 原因:总线电平由外部收发器或多主机设备控制,浮空输入确保无内部干扰。 

4、高速数字信号采样

  • 场景:高频脉冲计数(如编码器信号、PWM 输入捕获)。
  • 原因:浮空输入响应速度快,适合高速信号采集(需外部信号驱动能力强)。 

5、模拟信号预处理

  • 场景:连接比较器、运放等模拟电路的输出端。
  • 原因:避免内部电阻影响模拟电路输出的高精度电平。 

2.1.2、上拉输入(Input Pull-up)

        内部上拉电阻(约40kΩ)连接到 VDD。 上拉电阻导通,施密特触发器打开,输出被禁止。在需要外部上拉电阻的时候,可以使用内部上拉电阻,这样就可以节省一个外部电阻,但是内部上拉电阻的阻值较大,不适合做电流型驱动。

        上拉输入的特点:

  • 默认高电平:当引脚无外部驱动时,内部上拉电阻将电平拉至 VDD(3.3V)。
  • 抗干扰能力强:避免引脚悬空导致的电平漂移,较少噪声影响。
  • 简化外部电路:省去外部上拉电阻,节省 PCB 空间和成本。 

        该模式典型应用场景:

1、按键/开关检测

  • 场景:按键一端接地(低电平有效),按下时拉低引脚电平。
  • 原理:未按下时,内部上拉电阻使引脚保持高电平;按下时接地,电平变为低。 

 2、数字信号输入(无主动驱动高电平)

  • 场景:连接开漏输出的传感器(如某些红外模块)。
  • 原理:传感器只能拉低电平,需上拉电阻提供默认高电平。

3、总线空闲状态维持

  • 场景:单线通信协议(如 1-Wire)或自定义串行总线。
  • 原理:总线空闲时由上拉电阻维持高电平,设备通过拉低电平发送数据。 

4、电平转换接口

  • 场景:连接 5V 设备(通过电平转换芯片)。
  • 原理:若转换芯片输出为开漏模式,需上拉电阻提供 3.3V 高电平。 

5、防止未初始化引脚悬空

  • 场景:未使用的 GPIO 引脚。
  • 原理:配置为上拉输入,避免悬空引入噪声或意外电流。 

2.1.3、下拉输入(Input Pull-down)

        内部下拉电阻(约40kΩ)连接到 GND。 下拉电阻导通,施密特触发器打开,输出被禁止。在需要外部下拉电阻的时候,可以使用内部下拉电阻,这样也就可以节省一个外部电阻,但是内部下拉电阻的阻值较大,所以不适合做电流型驱动。

        下拉输入的特点:

  • 默认低电平:当引脚无外部驱动时,内部下拉电阻将电平拉至 GND(0 V)。
  • 抗干扰能力强:避免引脚悬空导致的高电平误触发。
  • 简化外部电路:省去外部下拉电阻,节省 PCB 空间和成本。

        该模式典型应用场景:

1、高电平有效信号检测

  • 场景:检测传感器或模块的高电平输出(如红外避障传感器、PIR 人体感应模块)。
  • 原理:未触发时引脚电平被下拉至低电平;触发时外部设备输出高电平。 

2、总线型通信的从设备选择

  • 场景:SPI 从设备的片选(CS)信号。
  • 原理:主设备未选中从设备时,片选线保持低电平(下拉);选中时主设备拉高电平。 

3、数字信号防抖动

  • 场景:连接机械开关或继电器触点。
  • 原理:下拉电阻确保开关断开时引脚为低电平,减少触点抖动引入的噪声。 

4、电平转换接口

  • 场景:连接 5V 设备的开漏输出(如某些老式传感器)。
  • 原理:外部设备拉高电平时,通过电平转换芯片输出 3.3V 高电平;未激活时下拉至低电平。 

5、未使用引脚的稳定处理

  • 场景:未连接的 GPIO 引脚。
  • 原理:配置为下拉输入,避免悬空引脚引入噪声或意外功耗。 

2.1.4、模拟输入(Analog Mode)

        上下拉电阻断开,施密特触发器关闭,双 MOS 管也关闭。该模式用于 ADC 采集或 DAC 输出,或者低功耗下省电。

 

        模拟输入的特点:

  •  禁用数字功能:引脚的数字输入/输出电路被断开,仅保留模拟信号路径。
  • 高精度低噪声:避免数字电路干扰,提高 ADC/DAC 的采样精度。
  • 无上拉/下拉:内部电阻断开,信号完全由外部模拟源驱动。

        该模式典型应用场景:

1、传感器信号采集

  • 场景:连接模拟输出传感器(如温度、压力、光照、湿度传感器)。
  • 示例: 

        (1)温度传感器(如 LM35、NTC 热敏电阻):输出电压随温度变化。

        (2)光敏电阻:电阻值随光照强度变化&#x


http://www.ppmy.cn/server/174556.html

相关文章

java-正则表达式

一、正则表达式能干什么&#xff1f; ✅ 验证格式&#xff1a;手机号、邮箱、日期✅ 提取数据&#xff1a;从日志/文本中抓取关键信息✅ 替换文本&#xff1a;批量修改字符串内容 二、Java正则核心API Java中用 java.util.regex 包的两个类&#xff1a; Pattern&#xff1a;…

linux自启动服务

在Linux环境中&#xff0c;systemd是一个系统和服务管理器&#xff0c;它为每个服务使用.service文件进行配置。systemctl是用于控制系统服务的主要工具。本文将详细介绍如何使用systemctl来管理vsftpd服务&#xff0c;以及如何设置服务自启动。 使用Systemd设置自启动服务 创…

红警95游戏秘籍

无限金钱&#xff1a; 在游戏中按下 Ctrl T&#xff0c;然后输入 xshome&#xff0c;再按 Enter。金钱增加到10000。 快速建造&#xff1a; 按下 Ctrl T&#xff0c;然后输入 easy&#xff0c;再按 Enter。建筑物和单位立即完成建造。 显示全部地图&#xff1a; 按下 Ctrl T…

力扣:找到一个数字的 K 美丽值(C++)

一个整数 num 的 k 美丽值定义为 num 中符合以下条件的 子字符串 数目&#xff1a; 子字符串长度为 k 。子字符串能整除 num 。 给你整数 num 和 k &#xff0c;请你返回 num 的 k 美丽值。 注意&#xff1a; 允许有 前缀 0 。0 不能整除任何值。 一个 子字符串 是一个字符串里…

标准卷积(Standard Convolution)

标准卷积的基础操作图解&#xff1a; 卷积之后尺寸公式&#xff1a; 输入尺寸&#xff1a;WH卷积核尺寸&#xff1a;Fw​Fh​填充大小&#xff1a;P步长&#xff1a;S 输出尺寸 WoutHout可以通过以下公式计算&#xff1a; 其中[x]表示向下取整。 实例&#xff1a; 输入图像…

开发、科研、日常办公工具汇总(自用,持续更新)

主要记录汇总一下自己平常会用到的网站工具&#xff0c;方便查阅。 update&#xff1a;2025/2/11&#xff08;开发网站补一下&#xff09; update&#xff1a;2025/2/21&#xff08;补充一些AI工具&#xff0c;刚好在做AI视频相关工作&#xff09; update&#xff1a;2025/3/7…

基于单片机的风速报警装置设计

标题:基于单片机的风速报警装置设计 内容:1.摘要 本设计聚焦于基于单片机的风速报警装置&#xff0c;旨在解决传统风速监测缺乏实时报警功能的问题。采用单片机作为核心控制单元&#xff0c;结合风速传感器采集风速数据。经实验测试&#xff0c;该装置能准确测量 0 - 60m/s 范…

QNAP威联通NAS第三方动态域名解析之docker部署DDNS GO

创作立场&#xff1a;原创不易&#xff0c;拒绝搬运~ hello大家好&#xff0c;我是你们的老伙伴&#xff0c;~ 好久不见&#xff0c;接近一个月没有更新了&#xff0c;大王有些偷懒&#xff0c;自省一下~ 首先介绍一下DDNS-GO的作用&#xff1a; DDNS-GO是一个动态域名解析…