STM32——GPIO介绍

        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.rhkb.cn/news/30184.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3月8号(信息差)

🌍“星际之门”首个数据中心重磅启航!料部署6.4万块英伟达GB200 🎄全球AI大混战升温!超越Sora的阿里万相大模型开源 家用显卡都能跑 ✨重磅!阿里深夜推出全新推理模型,仅1/20参数媲美DeepSeek R1 1.7B级形式化推理与验证小模型,媲美满血版DeepSeek-R1,全面开源! 研…

使用 NodeMCU 将温度和湿度传感器数据发送到 Firebase 实时数据库ESP8266

作者 使用 NodeMCU8266 将温度和湿度传感器数据发送到 Firebase 实时数据库 微控制器的内部存储器很小,不足以长时间保存传感器生成的数据,要么您必须使用一些外部存储设备,要么可以使用互联网将数据保存在一些云上。此外,当传感器部署在人类无法到达或难以经常访问的极端…

匿名GitHub链接使用教程(Anonymous GitHub)2025

Anonymous GitHub 1. 引言2. 准备3. 进入Anonymous GitHub官网4. 用GitHub登录匿名GitHub并授权5. 进入个人中心&#xff0c;然后点击• Anonymize Repo实例化6. 输入你的GitHub链接7. 填写匿名链接的基础信息8. 提交9. 实例化对应匿名GitHub链接10. 进入个人中心管理项目11. 查…

【结构设计】立创EDA专业版——3D外壳设计

【结构设计】立创EDA专业版——3D外壳设计 文章目录 前言立创EDA官网教程一、3D结构设计1. 外壳2. 铜柱3. 顶层4. 侧边 二、3D视图三、导出二、参考文章总结 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 立创EDA官网教程 立创EDA使用教程 立创…

Spring Boot 3 整合 MinIO 实现分布式文件存储

引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心&#xff0c;而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…

[数据结构]栈和队列

目录 1. 栈(Stack) 1.1、概念 1.2、 Stack的常用方法 1.3、有关栈的术语区分 2、实现自己的栈 2.1、入栈 2.2、出栈 2.3、查看栈顶元素 2.4、链式栈 3、队列(Queue) 3.1、概念 3.2、Queue的常用方法 3.3、循环队列 4、实现自己的链式队列 4.1、入队 4.2、出队 …

求最大公约数【C/C++】

大家好啊&#xff0c;欢迎来到本博客( •̀ ω •́ )✧&#xff0c;我将带领大家详细的了解最大公约数的思想与解法。 一、什么是公约数 公约数&#xff0c;也称为公因数&#xff0c;是指两个或多个整数共有的因数。具体来说&#xff0c;如果一个整数能被两个或多个整数整除&…

OSPF网络类型:NBMA与P2MP

一、NBMA网络 NBMA网络的特点 连接方式&#xff1a; 支持多台设备连接到同一个网络段&#xff0c;但网络本身不支持广播或组播。典型例子&#xff1a;帧中继、ATM。 DR/BDR选举&#xff1a; 由于网络不支持广播&#xff0c;OSPF需要手动配置邻居。 仍然会选举DR&#xff08…

c#财务软件专业版企业会计做账软件财务管理系统软件

本软件为绍兴客户开发的仿某碟财务软件专业版 功能&#xff1a;可以按会计科目做账录入会计凭证、结转损益、期末结账、拉资产负债表 github下载&#xff1a;https://github.com/oyangxizhe/financial.git

浅谈 DeepSeek 对 DBA 的影响

引言&#xff1a; 在人工智能技术飞速发展的背景下&#xff0c;DeepSeek 作为一款基于混合专家模型&#xff08;MoE&#xff09;和强化学习技术的大语言模型&#xff0c;正在重塑传统数据库管理&#xff08;DBA&#xff09;的工作模式。通过结合其强大的自然语言处理能力、推理…

blender学习25.3.6

【02-基础篇】Blender小凳子之凳面及凳脚的创作_哔哩哔哩_bilibili 【03-基础篇】Blender小凳子之其他细节调整优化_哔哩哔哩_bilibili 这篇文章写的全&#xff0c;不用自己写了 Blender 学习笔记&#xff08;一&#xff09;快捷键记录_blender4.1快捷键-CSDN博客 shifta&a…

JAVA编程【jvm垃圾回收的差异】

jvm垃圾回收的差异 JVM&#xff08;Java Virtual Machine&#xff09;的垃圾回收&#xff08;GC&#xff09;机制是自动管理内存的一种方式&#xff0c;能够帮助开发者释放不再使用的内存&#xff0c;避免内存泄漏和溢出等问题。不同的垃圾回收器&#xff08;GC&#xff09;有…

空间域与频域图像处理

第一部分&#xff1a;空间域图像处理&#xff08;Part 1&#xff09; 1. 点操作&#xff08;Pixel-wise Operations&#xff09; 定义&#xff1a;仅基于单个像素的灰度值进行变换&#xff0c;不依赖邻域信息。 常见操作&#xff1a; 2. 邻域操作&#xff08;Neighborhood O…

Vercel Serverless

1. 引言 现代应用程序是为适应当前技术环境需求而设计的软件&#xff0c;采用现代开发工具和实践&#xff0c;针对云部署和可扩展性优化。它们由多个模块化小组件组成&#xff0c;便于集成和缩放&#xff0c;具有高度的敏捷性和适应性&#xff0c;能快速响应用户或业务需求变化…

1. 树莓派上配置机器人环境(具身智能机器人套件)

1. 安装树莓派系统 镜像下载地址&#xff08;windows/Mac/Ubuntu)&#xff0c;安装Pi5. 2. 环境配置&#xff08;登录Pi系统&#xff09; 2.1 启用 SSH From the Preferences menu, launch Raspberry Pi Configuration. Navigate to the Interfaces tab. Select Enable…

ajax之生成一个ajax的demo示例

目录 一. node.js和express ​二. 使用express创建后端服务 三. 创建前端 一. node.js和express ajax是前端在不刷新的情况下访问后端的技术&#xff0c;所以首先需要配置一个后端服务&#xff0c;可以使用node.js和express。 首先生成一个空项目&#xff0c;新建main目录…

第本章:go 切片

注意&#xff1a; 切片必须要初始化 才能使用 &#xff0c;切片是引用类型 a :[]int{} // 这上叫始化 此时并没有申请内存 // 如果要追加值的话&#xff1a; append ints : append(a, 1, 2, 3)a : make([]int,5) // 声明切片类型var a []string //声明一…

RISC-V汇编学习(三)—— RV指令集

有了前两节对于RISC-V汇编、寄存器、汇编语法等的认识&#xff0c;本节开始介绍RISC-V指令集和伪指令。 前面说了RISC-V的模块化特点&#xff0c;是以RV32I为作为ISA的核心模块&#xff0c;其他都是要基于此为基础&#xff0c;可以这样认为&#xff1a;RISC-V ISA 基本整数指…

双指针8:18. 四数之和

链接&#xff1a;18. 四数之和 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; 本题和三数之和基本一样&#xff0c;参见双指针7&#xff1a;LCR 007. 三数之和-CSDN博客 class Solution { public:vector<vector<int>> fourSum(vector<int>&am…

EasyRTC嵌入式音视频通话SDK:基于ICE与STUN/TURN的实时音视频通信解决方案

在当今数字化时代&#xff0c;实时音视频通信技术已成为人们生活和工作中不可或缺的一部分。无论是家庭中的远程看护、办公场景中的远程协作&#xff0c;还是工业领域的远程巡检和智能设备的互联互通&#xff0c;高效、稳定的通信技术都是实现这些功能的核心。 EasyRTC嵌入式音…