【STM32 CubeMX】GPIO的工作模式

文章目录

  • 前言
  • 一、有哪些工作模式?
    • 1.1 GPIO的详细介绍
    • 1.2 GPIO的内部框图
      • 输入模式
      • 输出部分
  • 总结


前言

在嵌入式系统开发中,对于STM32微控制器的GPIO(General Purpose Input/Output)引脚的配置和使用是至关重要的。GPIO引脚可以通过STM32 CubeMX工具来进行灵活的配置,以满足各种应用需求。了解GPIO的工作模式对于正确配置和使用这些引脚至关重要。


一、有哪些工作模式?

1.1 GPIO的详细介绍

GPIO是General-purpose and alternate-function I/Os的缩写
他的含义是:通用和复用的引脚

GPIO是分组的,每一组有很多引脚
比如说PA0、PA1…PA15,一组GPIO有16个引脚
组数是由芯片决定的,具体的组数可以看对应的芯片的原理图

1.2 GPIO的内部框图

我们可以在芯片手册中找到GPIO的对应框图,他说对于某一个引脚的:
在这里插入图片描述
他可以分为两部分,上部分就是输入,下部分就是输出

输入模式

输入模式的框图如下:
在这里插入图片描述
要理解他,我们可以看下面的图:
在这里插入图片描述

我们通过配置pin1让他为输入,然后我们读某个寄存器就可以得到他的状态。
当k1按下,接到电源,那么pin肯定状态是1高电平,如果没有按下,相当于这个引脚是悬空状态
那么你读这个值,你知道他是什么状态吗,可能读出来是1,可以是0

再比如,我们配置pin2让他为输入,和上面一样,我们也去读,按下时为0,那么没有按下是什么状态呢,就和上面的是一样的了

那么我们怎么解决他这个问题呢
对于pin1我们可以加一个下拉电阻
在这里插入图片描述
那么他按下时就就会是高电平,没按就是低电平

同样的对于pin2,就需要加上拉电阻了
在这里插入图片描述
那么他按下时就就会是低电平,没按就是高电平

所以上下拉电阻是需要看实际的情况来选择的。

这些电阻集成到了芯片,我们可以直接设置他,是上拉还是下拉,我们就不用每一个都搞一个电阻了

回到框图:
在这里插入图片描述
其中,里面的VDD为上拉电阻
Vss为下拉电阻,他在芯片中已经设计好的了

还有一种输入就是 Analog Input,模拟输入,那么模拟输入的话,他需要得到具体的电压值,所以我们不能设置上下拉电阻,完全由外部电路控制,要不然模拟输入和直接输入没两样了

那么输入就是这几部分:上拉输入、下拉输入、浮空输入、模拟输入

在最后我们通过读取输入寄存器:Input data register,得到1/0

如果说他有毛刺怎么办:他会在某一个范围电压内为1,某一个电压范围为0

输出部分

在这里插入图片描述
他这个GPIO可以接到一个灯,或者其他的芯片
如果是点灯,那么电压肯定是越高越好
如果是关灯,电压肯定是越低越好

当输出1时,I/O pin连接到P-MOS的VDD,然后就能点灯了
如果输出0,P-MOS断开,连接地,所以就关灯
推挽输出:当你要高电平,就推到VDD,如果要低电平,就推到VSS这样就是推挽输出,可以输出高低电平

开漏输出:
在开漏输出中,有两种状态:开和关。当开漏输出为开启状态时,它会将电路连接到地(或负极),使得电路的输出变为低电平。而当开漏输出为关闭状态时,它不会连接到任何地方,使得电路的输出由外部设备或其他电路来控制。

开漏输出一般是用来解决两个芯片通信的问题的
不至于把两个芯片搞坏


总结

GPIO的工作模式直接影响了STM32微控制器在特定应用中的表现。正确选择和配置GPIO引脚的工作模式是嵌入式系统开发中的基础步骤。通过STM32 CubeMX工具,开发者可以方便地进行可视化配置,快速而准确地实现GPIO引脚的功能分配。理解和熟练使用GPIO的不同工作模式,有助于优化嵌入式系统的性能,并确保引脚的灵活应用于各种应用场景。

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

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

相关文章

【解决】配置文件YAML: application.yml Cannot resolve configuration property ‘xxxx‘

配置文件YAML: application.yml Cannot resolve configuration property xxxx 问题排查解决 问题 在application.yml文件里面配置Bean的初始值,但是报错如下: Cannot resolve configuration property person.lastName 排查 我们先去Bean检查是否拼写…

基于函数计算AIGC图片识别

目录 在 OSS 中建立图片目录 在函数计算中基于模板创建ImageAI应用 体验ImageAI图像识别效果 我们不但可以基于函数计算创建AIGC应用,实现以文生图,同时我们也可以基于函数计算创建ImageAI应用,通过简单几步实现对图片中对象的识别。下面我…

【运维测试】测试理论+工具总结笔记第1篇:测试理论的主要内容(已分享,附代码)

本系列文章md笔记(已分享)主要讨论测试理论测试工具相关知识。Python测试理论的主要内容,掌握软件测试的基本流程,知道软件测试的V和W模型的优缺点,掌握测试用例设计的要素,掌握等价类划分法、边界值法、因…

qt“五彩斑斓“ opengl

本篇文章我们来描述一下opengl相关知识 我们先看一下opengl渲染的效果 很漂亮? 那下面就来介绍一下这么漂亮的opengl OpenGL(Open Graphics Library)是一个跨平台的图形编程接口,用于渲染2D和3D图形。它提供了一系列函数和数据结…

Zotero插件分享(第二弹)

今天紧接上一篇文章(Zotero常用插件分享),继续分享关于Zotero常用插件的相关内容。(排名不分先后) 1.Translate for Zotero 英文文献阅读辅助工具,可以实现将pdf中选中的文字翻译为指定语言,并…

Git中Idea操作git及Git Flow

目录 一、Idea中使用Git 1.idea配置Git和Gitee 2.实践操作 1.将本地项目推送到远程 2.从远程库克隆项目到本地 二、Git Flow 1.什么是Git Flow 2.工作流程 3.实践操作 一、Idea中使用Git 1.idea配置Git和Gitee 第一步:设置git.exe的安装路径 在设置中的…

RMSNorm原理及代码

RMSNorm原理及代码 在大模型中使用层归一化有如下几个因素: 改善网络稳定性加速收敛速度提高模型的泛化能力 批量归一化是对一个批次内的数据进行归一化 层归一化是对一个样本中的不同特征进行归一化 如下是LayerNorm与RMSNorm的公式 在LLaMA中使用RMSNorm替代…

DolphinScheduler安装与配置

DolphinScheduler概述 Apache DolphinScheduler是一个分布式、易扩展的可视化DAG工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 DolphinScheduler的主要角色如下: MasterServer采用分布式无…

二分查找算法及其简单应用(C语言实现)

目录 二分查找算法介绍 二分查找算法的简单应用 二分查找算法介绍 二分查找算法,指在一组有序的数组内查找数值,查找的数值与查找范围内的中间数值进行比较,如果比中间数值小,则在原范围内的左侧范围内重复与该范围内的中间数值…

GPT4:画一只小怪兽,但是不断升级

请你画一只1级的萌怪兽 请你画一只3级的萌怪兽 请你画一只5级的小怪兽 请你画一只10级的小怪兽 请你画一只50级的怪兽 请你画一只100级的怪兽 怪兽被闪电劈了一下,变成了一只0.1级的可爱小怪兽

喝汽水问题

目录 一、题目二、思路二、方法2.1方法一2.2方法二 一、题目 题目:水已知1瓶汽水1元,2个空瓶可以换⼀瓶汽水,输⼊整数money(money>0),表示money元钱,计算可以多少汽水,请编程实现…

Pygame常用模块

Pygame是一个功能强大的Python库,用于开发2D游戏。它提供了许多模块和工具,使得游戏开发变得更加简单和有趣。在这篇文章中,我们将介绍一些Pygame常用的模块,了解它们的功能和用法。 1. pygame.display模块: pygame.d…

软考26-上午题-图3

一、图的遍历 从图中的某个顶点出发,沿着某条搜索路径对图中的所有顶点进行访问,且,只访问一次的过程。 图的遍历比树的遍历复杂,因为要避免对顶点进行重复访问,所以在图的遍历过程中,必须记下每个已访问…

冰雪遮盖着伏尔加河

三套车 - 杨洪基词:李幼客 曲:彼得格鲁波基 冰雪遮盖着伏尔加河 冰河上跑着三套车 有人在唱着忧郁的歌 唱歌的是那赶车的人小伙子你为什么忧愁 为什么低着你的头是谁叫你这样伤心 问他的是那乘车的人 你看吧这匹可怜的老马 它跟我走遍天涯可恨那财主要把…

爬虫系列-web请求全过程剖析

🌈个人主页: 会编程的果子君 ​💫个人格言:“成为自己未来的主人~” 上一小节我们实现了一个网页的整体抓取工作,那么本小节,给各位好好剖析一下web请求的全部过程,这样有助于后面我们遇到的各种各样的网站就有了入手…

【树莓派系统的位数】

要区分 ARM 架构下载的版本是 32 位还是 64 位,可以执行以下步骤: 执行以下命令来检查 Raspberry Pi 的 CPU 类型: uname -m如果返回的结果是 aarch64,则表示您的 Raspberry Pi 是 64 位的 ARM 架构。如果返回的结果是 armv7l&a…

[Linux开发工具]项目自动化构建工具-make/Makefile

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.背景2.依赖关系和依…

使用LORA微调RoBERTa

模型微调是指在一个已经训练好的模型的基础上,针对特定任务或者特定数据集进行再次训练以提高性能的过程。微调可以在使其适应特定任务时产生显着的结果。 RoBERTa(Robustly optimized BERT approach)是由Facebook AI提出的一种基于Transfor…

python算法之 Dijkstra 算法

文章目录 基本思想:步骤:复杂度:注意事项:代码实现K 站中转内最便宜的航班 Dijkstra 算法是一种用于解决单源最短路径问题的经典算法。该问题的目标是找到从图中的一个固定顶点(称为源点)到图中所有其他顶点…

四、OpenAI之文本生成模型(Text Generation)

文本生成模型 OpenAI的文本生成模型(也叫做生成预训练的转换器(Generative pre-trained transformers)或大语言模型)已经被训练成可以理解自然语言、代码和图片的模型。模型提供文本的输出作为输入的响应。对这些模型的输入内容也被称作“提示词”。设计提示词的本质是你如何对…