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.mzph.cn/pingmian/71802.shtml

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

相关文章

学习笔记:Python网络编程初探之基本概念(一)

一、网络目的 让你设备上的数据和其他设备上进行共享&#xff0c;使用网络能够把多方链接在一起&#xff0c;然后可以进行数据传递。 网络编程就是&#xff0c;让在不同的电脑上的软件能够进行数据传递&#xff0c;即进程之间的通信。 二、IP地址的作用 用来标记唯一一台电脑…

DeepSeek 医疗大模型微调实战讨论版(第一部分)

DeepSeek医疗大模型微调实战指南第一部分 DeepSeek 作为一款具有独特优势的大模型,在医疗领域展现出了巨大的应用潜力。它采用了先进的混合专家架构(MoE),能够根据输入数据的特性选择性激活部分专家,避免了不必要的计算,极大地提高了计算效率和模型精度 。这种架构使得 …

JetBrains学生申请

目录 JetBrains学生免费授权申请 IDEA安装与使用 第一个JAVA代码 1.利用txt文件和cmd命令运行 2.使用IDEA新建项目 JetBrains学生免费授权申请 本教程采用学生校园邮箱申请&#xff0c;所以要先去自己的学校申请校园邮箱。 进入JetBrains官网 点击立即申请&#xff0c;然…

LINUX网络基础 [五] - HTTP协议

目录 HTTP协议 预备知识 认识 URL 认识 urlencode 和 urldecode HTTP协议格式 HTTP请求协议格式 HTTP响应协议格式 HTTP的方法 HTTP的状态码 ​编辑HTTP常见Header HTTP实现代码 HttpServer.hpp HttpServer.cpp Socket.hpp log.hpp Makefile Web根目录 H…

六十天前端强化训练之第八天到第十四天——综合案例:用户管理系统

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗&#xff0c;谢谢大佬&#xff01; 目录 一、知识体系详解 1. 变量与作用域 2. 箭头函数特性 3. 数组高阶函数 4. DOM操作原理 5. 事件传播机制 6. 闭包核心原理 7. 原型继承体系 8. Promise工作流程 二、综…

技术周总结 03.03 - 03.09 周日(Java监控 SpringAI)

文章目录 一、03.05 周三二、03.08 周六openAI 的Spring开发 一、03.05 周三 jvisualvm java自带的监控和故障排除工具 命令行执行后&#xff0c;会出现 JConsole 二、03.08 周六 openAI 的Spring开发 引入 spring-ai-openai-spirng-boot-starter 依赖 Spring AI http…

DeepSeek:中国AGI破局者的技术革命与生态重构

在AI领域被"算力霸权"与"技术垄断"笼罩的今天&#xff0c;一家来自杭州的初创公司正以颠覆性创新撕开行业铁幕。DeepSeek&#xff08;深度求索&#xff09;不仅重新定义了AGI技术研发范式&#xff0c;更通过开源生态构建引发全球AI产业格局的深度重构。 一…

manus本地部署使用体验

manus部署 https://github.com/mannaandpoem/OpenManus git clone https://github.com/mannaandpoem/OpenManus.git 或者手工下载zip包解压&#xff0c;包很小&#xff0c;只有几百K。 cd OpenManus-main #创建python环境&#xff0c;有python3的可以用python3 python -m ven…

【统计至简】【入门测试1】给定数据矩阵X,如何求其质心、中心化数据、标准化数据、格拉姆矩阵、协方差矩阵、相关系数矩阵

给定数据矩阵X&#xff0c;如何求其质心、中心化数据、标准化数据、格拉姆矩阵、协方差矩阵、相关系数矩阵。   设数据矩阵 X X X是一个 n p n\times p np的矩阵&#xff0c;其中 n n n是样本数量&#xff0c; p p p是变量数量&#xff0c; X ( x i j ) X (x_{ij}) X(xij​…

CI/CD—Jenkins、Maven安装

Jenkins简介 Jenkins 是一款广泛使用的开源持续集成和持续交付&#xff08;CI/CD&#xff09;工具&#xff0c;以下是对它的详细介绍&#xff1a; 基本信息 起源与发展&#xff1a;Jenkins 最早起源于 Hudson 项目&#xff0c;后来从 Hudson 项目中分离出来独立发展。自 2011 …

抽奖系统测试报告

项目链接: 管理员登录页面 项目功能: 管理员登录: 登录方式分为两种: 手机号密码登录: 正确输入密码和手机号登录 短信验证码登录: 输入手机号,等待验证码,输入验证码登录 管理员注册: 登录页面点击注册按钮即可注册管理员身份 人员管理模块: 人员管理模块分为注册…

【高级篇】大疆Pocket 3加ENC编码器实现无线RTMP转HDMI进导播台

【高级篇】大疆Pocket 3加ENC编码器实现无线RTMP转HDMI进导播台 文章目录 准备工作连接设备RTMP概念ENCSHV2推流地址设置大疆Pocket 3直播设置总结 老铁们好&#xff01; 很久没写软文了&#xff0c;今天给大家带了一个干货&#xff0c;如上图&#xff0c;大疆Pocket 3加ENC编…

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 Servlet 与 JSP 的协作:MVC 模式的雏形

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Servl…

【不是广告】华为昇腾的一小步,Pytorch的一大步

华为昇腾的一小步&#xff0c;Pytorch的一大步 关键词 首个、中国首个、全球第十、最高级别&#xff01;看看这些字眼&#xff0c;就知道事情不简单&#xff01; 书接上文《Pytorch的一小步&#xff0c;昇腾芯片的一大步》 在2023年10月4日PyTorch 2.1版本的发布博客上&…

python从入门到精通(二十六):python文件操作之Word全攻略(基于python-docx)

python文件操作之word技巧大全 word技巧基础到高级操作大全A.准备工作1. 安装python-docx库2. 导入库 B.基础操作1. 创建Word文档1.1 创建文档对象1.2 添加word标题1.3 添加word段落1.4 设置段落样式1.5 创建有序列表1.6 创建无序列表1.7添加word分页1.8 添加word图片1.9 添加w…

Debian二次开发一体化工作站:提升科研效率的智能工具

在科研领域&#xff0c;数据处理是实验成功的关键环节之一。随着实验数据的复杂性和规模不断增加&#xff0c;传统的数据处理方法已经难以满足科研人员的需求。这时&#xff0c;一体化工作站应运而生&#xff0c;成为科研实验数据处理的 “智能大脑”。 一体化工作站&#xff…

linux学习(五)(服务器审查,正常运行时间负载,身份验证日志,正在运行的服务,评估可用内存)

服务器审查 在 Linux 中审查服务器的过程包括评估服务器的性能、安全性和配置&#xff0c;以确定需要改进的领域或任何潜在问题。审查的范围可以包括检查安全增强功能、检查日志文件、审查用户帐户、分析服务器的网络配置以及检查其软件版本。 Linux 以其稳定性和安全性而闻名…

Redis- 大key

大key 什么是大key问题大key的危害大key的识别方法大key问题的解决方案数据结构优化与拆分压缩与序列化优化预防与监控机制 什么是大key问题 大Key问题是指在Redis等内存数据库中&#xff0c;某个Key对应的value数据结构过大&#xff0c;通常是指单个Key的大小超过10KB甚至达到…

C语言_数据结构总结6:链式栈

纯c语言代码&#xff0c;不涉及C 顺序栈的实现&#xff0c;欢迎查看这篇文章&#xff1a;C语言_数据结构总结5&#xff1a;顺序栈-CSDN博客 0. 结构单元 #include<stdio.h> #include<stdlib.h> typedef int ElemType; typedef struct Linknode { ElemType…

新品速递 | 多通道可编程衰减器+矩阵系统,如何破解复杂通信测试难题?

在无线通信技术快速迭代的今天&#xff0c;多通道可编程数字射频衰减器和衰减矩阵已成为测试领域不可或缺的核心工具。它们凭借高精度、灵活配置和强大的多通道协同能力&#xff0c;为5G、物联网、卫星通信等前沿技术的研发与验证提供了关键支持。从基站性能测试到终端设备校准…