STM32的GPIO

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

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

相关文章

tyut-数据库期末复习要点

第一章 数据库系统(DBS)是由数据库(DB),数据库(DBMS) ,应用程序和数据库管理员 (DBA)组成的存储,管理,处理和维护数据的系统 数据模型:比较真实的模拟现实世…

构建基于LLM的应用程序——为您的应用程序选择合适的LLM

。 在本章中,将引导您完成为应用程序选择合适LLM的过程。我们将涵盖以下几个主题: 市场上最具前景的LLM概览比较LLM时应使用的主要标准和工具规模与性能之间的权衡 在本章结束时,您应该能够清楚地理解如何为您的应用程序选择合适的LLM&…

商品价格与优惠信息在API返回值中的位置

在API返回值中,商品价格与优惠信息的具体位置可能因不同的电商平台和API设计而有所不同。然而,一般来说,这些信息会以结构化的方式呈现,通常包含在一个包含多个字段的JSON对象或XML文档中。以下是根据多个电商平台(如阿…

Docker的介绍、保姆级安装和使用

一、Docker简介 1.1、Docker是什么 Docker是一个用于开发、发布和运行应用程序的开放平台;使您能够将应用程序与基础设施分离,以便您可以快速交付软件。不像虚拟机那样笨重(比如:我需要将一个安装好nginx环境的内容分享给其他人: 方式一【使用虚拟】(应用程序Nginx与基…

基于Hadoop的微博社交媒体用户大数据分析【海量数据】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍数据集展示Hadoop脚本文件可视化展示每文一语 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 本项目基于hadoop的社交媒体用户进行大数据…

C++:模板 II(非类型模板参数,特化,分离编译)

目录 非类型模板参数 模板的特化 函数模板特化 类模板特化 全特化 偏特化 引用特化 指针特化 模板分离编译 非类型模板参数 什么是非类型模板参数? 顾名思义,它的类型形参并不是一个类型,就是用一个常量来作为类模板或函数模板的…

一款能满足低压供电应用需求SLM8837EF-7G 高效节能的电机驱动芯片

SLM8837EF-7G是一款专为低压供电的电机驱动应用而设计的先进芯片,其内部集成了多种保护电路,以确保系统稳定性和安全性。该芯片拥有双通道 NMOS 半桥输出,分别由两路独立的 PWM 输入控制,提供灵活而精准的控制方式。两个单独的供电…

docker启动ES(elasticsearch:7.17.23)

docker直接启动es,报如下错误 2024-08-22 10:52:27 ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. 2024-08-22 10:52:27 bootstrap check failure [1] of [1]: the defa…

API接口安全101:基础概念与最佳实践

文章目录 API定义协议架构风格描述语言 Webservicewsdl介绍复现 SOAPswagger介绍指纹查找利用存在目录复现 HTTPWebpack介绍复现 在当今数字化时代,API接口已成为现代软件架构中不可或缺的组成部分。它们连接着各种应用程序和服务,促进了数据交换和功能集成。然而,随着API的普及…

人工智能NLP--特征提取之词嵌入(Word Embedding)

一、前言 在上篇文章中,笔者详细讲解介绍了人工智能自然语言处理特征提取中的TD-IDF型文本处理方法,那么接下来,笔者将为大家揭晓,目前阶段,在特征提取,也就是文本数据转成数字数据领域内最常用也是最好用…

在MAVEN中版本依赖有冲突改怎么处理

1.为什么会出现版本依赖的冲突 如果存在版本冲突,通常可能会引发的报错是ClassNotFoundException、NoSuchMethodError等错误。Maven依赖版本冲突通常是由于间接依赖导致同一个jar包存在多个不同版本。例如,如果B依赖了A的1.0版本,而C依赖了A…

网络安全之xss靶场练习

目录 一、xss靶场练习 1、Ma Spaghet! 2、Jefff 第一个方法 第二个方法 3、Ugandan Knuckles 4、Ricardo Milos 5、Ah Thats Hawt 6、Ligma 7、Mafia​编辑 8、Ok, Boomer 一、xss靶场练习 靶场地址 https://xss.pwnfunction.com/ 页面显示如下 1、Ma Spaghet! 分析…

Python之字符串练习题(下)

21.nameStr“Albert Einstein",如何使用字符串运算符“:”来提取 nameStr 中的名和姓? mingnameStr[:6] xingnameStr[7:]23.下面哪些语句在运行时不会出错? (a)var xyz ’ * 10.5 (b)var ‘xyz’ * ‘5 ©var‘’xyz’*5 (d)var‘xyz’*5.0 重复运算符…

Flutter Web 正式官宣弃用 HTML renderer , Canvas 路线成为唯一

Flutter Web 团队计划在 2025 年的第一个 Flutter stable 版本中弃用 HTML renderer,当然在 master 和 beta 中会更早合并这一更改。 关于这个话题,其实在年初的我就曾发布过 《Flutter 即将放弃 Html renderer 》, Html renderer 从 2018 年…

Redis远程字典服务器(7)—— set类型详解

目录 一,基本情况 二,常用命令 2.1 sadd 2.2 smembers,sismember 2.3 spop,srandmember 2.3 smove,srem 2.4 sinter,sinterstore求交集 2.5 sunion,sunionstore求并集 2.6 sdiff&#…

MySQ分库分表与MyCat安装配置

目录 介绍 拆分策略 垂直拆分 1. 垂直分库 2. 垂直分表 水平拆分 1. 水平分库‘ 2. 水平分表 实现技术 MyCat概述 安装 概念介绍 MyCat入门 需求 环境准备 分片配置 启动服务 连接测试 执行SQL语句测试 MyCat配置 1. schema.xml 1. schema标签 2. dat…

python | 图片转换为 pdf 实现方法

目录 一、PIL 库简介及安装使用方法 (一)python 不同版本下 PIL 的使用方法 二、图片转换为 pdf 的两种实现方法 (一)简易版——pdf 页面尺寸跟随图片大小 (二)常用版——pdf 每页尺寸统一为 A4 一、P…

C++,std::bind 详解

文章目录 1. 概述2. 基本用法2.1 使用占位符2.2 示例 3. 总结 1. 概述 std::bind 是 C11 引入的一个功能,它允许你将函数(或成员函数、函数对象)与其参数绑定,生成一个新的可调用对象。这个功能在需要将函数及其参数一起传递给其…

闲鱼IP属地地址:去外地会自动变化吗?解析实时更新机制

在数字化时代,网络交易平台如闲鱼已成为我们日常生活中不可或缺的一部分。在进行二手交易时,了解对方的地理位置信息成为许多买家和卖家的关切点。那么,去外地闲鱼IP会变吗?闲鱼IP属地地址是实时更新吗?本文将深入探讨…

基于百度智能云爆破验证码识别

目录 基于百度智能云爆破验证码识别 一、基于php提供验证码校验接口 二、基于百度云API识别验证码 1、领取资源,创建应用 2、利用应用的API Key和Secret Key获取Access Token 3、文字识别 4、编写爆破程序 基于百度智能云爆破验证码识别 一、基于php提供验证…