STM32的GPIO

news2024/11/25 5:26:02

GPIO基本控制

GPIO(General-Purpose input/output,通用输入/输出接口)

用于感知外部信号(输入模式)和控制外部设备(输出模式)

简单模块:LED,按键,蜂鸣器,温度传感器,使用一个GPIO就可以完成数据的传输/控制

复杂一点的模块OLED,FLASH,六轴传感器需要多个引脚组成“协议”传输数据,USART,IIC,SPI等协议

MCU单片机大都采用引脚复用模式也就是一个GPIO,可以直接控制它输出高低电平,也可以设置为某个协议的引脚之一。此外,一些MCU的引脚,还能设置为ADC模 式读取模拟信号,或者设置为DAC模式输出模拟信号

STM32的GPIO(General Purpose Input/Output,通用输入输出)引脚支持多种工作模式,这些模式通过配置GPIOx_MODER(模式寄存器)、GPIOx_OTYPER(输出类型寄存器)、GPIOx_OSPEEDR(输出速度寄存器)、GPIOx_PUPDR(上下拉/复用功能选择寄存器)、以及GPIOx_AFRx(复用功能选择寄存器,对于复用功能而言)等寄存器来实现。虽然具体数字可能因不同的STM32系列和参考手册而略有不同,但一般而言,STM32的GPIO主要可以配置为以下八种(或类似)工作模式:

输入:

  1. 模拟输入(Analog Input)
    • 在这种模式下,GPIO引脚被配置为模拟信号输入,用于连接模拟传感器或其他模拟信号源。此时,引脚上的模拟信号可以被ADC(模拟数字转换器)读取。
  2. 浮空输入(Floating Input)
    • 浮空输入模式下,引脚处于高阻态,不连接内部上拉或下拉电阻。此时,引脚电平取决于外部电路条件,容易受到噪声影响。
  3. 上拉输入(Pull-up Input)
    • 在上拉输入模式下,引脚内部连接了一个上拉电阻到高电平(通常为VDD)。当外部没有信号连接或信号为低电平时,引脚会被上拉到高电平。这有助于稳定输入信号,减少噪声干扰。
  4. 下拉输入(Pull-down Input)
    • 与上拉输入相反,下拉输入模式下引脚内部连接了一个下拉电阻到低电平(通常为GND)。当外部没有信号连接或信号为高电平时,引脚会被下拉到低电平。

输出:

  1. 开漏输出(Open-Drain Output)
    • 开漏输出模式下,引脚只能输出低电平或高阻态,无法直接输出高电平。当多个开漏输出的引脚连接到一起时,可以实现“线与”功能,即所有引脚都为高阻态时,输出电平由外部上拉电阻决定(外界上拉电阻可以输出高电平)。常用于I2C总线等。
    • 开漏输出特性:利用外部电路驱动能力,实现电平转换,方便实现“逻辑与”功能。
    • 开漏输出模式下,P-MOS管无效,N-MOS有效。
    • 当输出数据寄存器写1,N-MOS断开,输出控制相当于断开,也就是高阻态(所以不能输出高电平)。
    • 当输出数据寄存器写0,N-MOS导通,输出控制相当于接VSS,输出为低电平。
    • 开漏输出模式下,只有低电平才有驱动能力,高电平无驱动能力,引脚只能输出低电平,可以作为通信协议的驱动方式比如I2C通信的引脚。
  2. 推挽输出(Push-Pull Output)
    1. 推挽输出模式下,引脚可以直接驱动外部负载,输出高电平或低电平。这种模式输出电流较大,适用于驱动LED、继电器等负载。

        在推挽输出模式下,P-MOS和N-MOS均有效。

  • 当输出寄存器写1,上管导通,下管断开,输出控制接到VDD(电源),输出为高电平
  • 当输出寄存器写0,上管断开,下管导通,输出控制接到VSS(地面或负极),输出为低电平。
  1. 复用功能(Alternate Function)
    • 复用功能模式下,GPIO引脚被配置为执行特定的外设功能,如SPI、I2C、USART等通信接口的通信引脚。具体复用为哪种功能,通过配置GPIOx_AFRx寄存器来选择。
  2. 复用开漏输出(Alternate Function Open-Drain Output)
    • 这种模式结合了复用功能和开漏输出的特点,引脚被配置为执行特定的外设功能,但输出方式为开漏输出。常用于需要开漏输出的外设接口,如I2C总线接口。

请注意,不是所有的STM32系列都严格遵循上述八种模式分类,但大多数STM32的GPIO都支持类似的功能。具体配置时,应参考具体的STM32系列参考手册。

GPIO的输出速度

STM32的I/O引脚工作再输出模式下时,需要配置I/O引脚的输出速度

该输出速度不是输出信号的速度,而是I/O口驱动电路的响应速度

STM32提供了三个速度,2MHZ,10MHZ,50MHZ

实际开发过程中需要结合实际情况选择合适的响应速度,以兼顾信号的稳定性和低功耗

当设备为高速时,功耗大,噪声大,电磁干扰强

当设备为低速时,功耗低,噪声小,电磁干扰弱

简单外设,比如LED灯,蜂鸣器建议使用2MHZ的输出速度

而复用为IIC,SPI等通信信号时,建议使用10MHZ或50MHZ以提高响应速度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2061515.html

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

相关文章

qt-PLC可视化编辑器

qt-PLC可视化编辑器 一、演示效果二、核心代码三、下载链接 一、演示效果 二、核心代码 #include "diagramitem.h" #include "arrow.h"#include <QDebug> #include <QGraphicsScene> #include <QGraphicsSceneContextMenuEvent> #includ…

1 Kubeflow总体介绍-学习笔记

1 什么是 Kubeflow Kubeflow 是一个开源项目社区和生态系统&#xff0c;支持机器学习 (ML) 生命周期中的每个阶段 &#xff0c;并支持相关的开源 工具和框架&#xff0c;Kubeflow 使 Kubernetes 上的 AI/ML 变得简单、可移植且可扩展。 Kubeflow 都能提供模块化、可扩展的工具…

C语言第17篇

1.在C语言中,全局变量的存储类别是_________. A) static B) extern C) void D) register 提示&#xff1a;extern adj.外来的 register n.登记表&#xff0c;v.登记 提示与本题无关 2.在一个C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变…

JimuReport 积木报表 v1.8.0 版本发布,开源可视化报表

项目介绍 一款免费的数据可视化报表工具&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完…

【Python】成功解决 NameError: name ‘reload‘ is not defined

【Python】成功解决 NameError: name ‘reload’ is not defined 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校…

【学习笔记】7、存储器、复杂可编程器件和现场可编程门阵列

可编程逻辑器件PLD复杂可编程逻辑器件CPLD现场可编程门阵列FPGA 7.1 只读存储器&#xff08;ROM&#xff09; 7.1.1 ROM的结构 ROM存储器 存储阵列 地址译码器 输出控制电路 存储阵列&#xff0c;由许多存储单元&#xff08;1bit&#xff09;组成。每次读出一组数据&…

HTML实现俄罗斯方块

本篇文章主要讲使用HTML、CSS和JavaScript实现一个简单的俄罗斯方块游戏&#xff0c;包含基本的游戏逻辑、行消除功能以及暂停和继续游戏的控制。 使用工具 本篇文章有用到ChatGPT-4o代码纠错&#xff0c;国内免翻且稳定&#xff0c;感兴趣的大佬试试。 传送门&#xff1a;36…

认知杂谈20

今天分享 有人说的一段争议性的话 I I 程序员的高薪舒适圈&#xff1a;光鲜背后的挑战 一说起程序员这个职业&#xff0c;很多人马上就会想到高薪&#xff0c;觉得他们过着白领的生活。确实&#xff0c;程序员一般都能拿到比好多行业都高的工资&#xff0c;工作时间也比较稳…

谷粒商城实战笔记-232-商城业务-认证服务-框架效果演示-xxl-sso-徐雪里

文章目录 一&#xff0c;膜拜大神许雪里二&#xff0c;用开源框架xxl-sso演示单点登录1&#xff0c;我是老板&#xff0c;我有三个网站2&#xff0c;配置域名3&#xff0c;下载xxl-sso代码4&#xff0c;服务规划5&#xff0c;配置修改5.1 xxl-sso-server redis配置修改5.1 xxl-…

使用FModel提取黑神话悟空的资产

使用FModel提取黑神话悟空的资产 前言设置效果展示闲聊可能遇到的问题没有相应的UE引擎版本选项 前言 黑神话悟空昨天上线了&#xff0c;解个包looklook。 本文内容比较简洁&#xff0c;仅介绍解包黑神话所需的专项配置&#xff0c;关于FModel的基础使用流程&#xff0c;请见…

Python3学习(一)

目录 Python版本 标识符 保留字 注释 缩进 多行语句 同一行显示多条语句 import 与 from...import 变量 数据类型 Number&#xff08;数字&#xff09; 数字类型 数值运算 String&#xff08;字符串&#xff09; bool&#xff08;布尔类型) List&#xff08;列…

废品回收小程序,开启上门回收模式

废品回收一直是一个热门行业&#xff0c;市场发展空间巨大。随着科技的发展&#xff0c;废品回收也与时俱进&#xff0c;进行了转型&#xff01;“互联网上门回收”的新模式&#xff0c;运用信息技术的力量&#xff0c;让废品回收变得更加高效便捷&#xff0c;同时也为回收行业…

秋招红队面试经验分享

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》 《Java代码审计》 《Web安全…

【JS|第25期】探索HTTP POST请求:请求体的演变与应用

日期&#xff1a;2024年8月16日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

OpenLayers3, 缩放、平移、复位操作

文章目录 一、前言二、代码示例 一、前言 本文基于OpenLayers3实现地图缩放、平移和复位操作 二、代码示例 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htm…

【YOLO5 项目实战】(4)红外目标检测

欢迎关注『youcans动手学模型』系列 本专栏内容和资源同步到 GitHub/youcans 【YOLO5 项目实战】&#xff08;1&#xff09;YOLO5 环境配置与测试 【YOLO5 项目实战】&#xff08;2&#xff09;使用自己的数据集训练目标检测模型 【YOLO5 项目实战】&#xff08;3&#xff09;P…

12 程序控制语句:循环控制(while、do-while、for、多重嵌套循环、死循环)

目录 1 while 循环 1.1 基本语法 1.2 流程图 1.3 计数循环 1.3.1 实现原则 1.3.2 案例&#xff1a;循环输出语句 1.3.3 案例&#xff1a;循环输出数字 7~15 1.3.4 案例&#xff1a;倒序输出数字 56 ~ 43 1.3.5 案例&#xff1a;输出 10&#xff08;包括 10&…

SAP 预扣税配置步骤文档【Withholding Tax]

1. 配置预扣税的基本概念 预扣税是对某些支付进行扣除的税&#xff0c;可能适用于各种财务交易&#xff08;例如&#xff0c;供应商支付、股息支付等&#xff09;。预扣税通常包括几种类型&#xff0c;如个人所得税、企业所得税和其他税务种类。 2. 配置步骤 以下是一般的预…

Notion使用详解

​ ​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 Notion是一款集笔记、任务管理、知识库、文档协作等多功能于一体的生产力工具。其灵活性和可定制性使得它在个人和团队协作中都非常受欢迎。本教程将详细介绍如何使用Notion的基本功能&#xff0c;帮助你快速上手并充分…

Open3D mesh 模型切片

目录 一、概述 1.1简述 1.2实现步骤 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始mesh 3.2切片后的mesh Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff08;长期更新&#xff09;-CSDN博客 一…