【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.hqwc.cn/news/467907.html

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

相关文章

Elasticsearch使用场景深入详解

Elasticsearch是一个开源的、分布式的、RESTful风格的搜索和数据分析引擎。它能够解决越来越多的用例,并不仅仅局限于全文搜索。以下是Elasticsearch的一些主要使用场景及其深入详解。 1. 全文搜索 Elasticsearch最初和最基本的应用场景就是全文搜索。全文搜索是指…

MATLAB知识点:fibonacci函数(★☆☆☆☆)返回斐波那契数列

​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章:课后习题讲解中拓展的函数 在讲解第…

VBA技术资料MF118:在多个工作表中插入页眉和页脚

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

app逆向-⽹络请求库Retrofit2

文章目录 一、前言二、POST应用三、GET应用 一、前言 Retrofit2 是基于 OkHttp 构建的 RESTful HTTP 客户端,专门用于简化 HTTP 请求的过程,尤其是用于访问 RESTful API。 Retrofit2 提供了一个声明式的方式来定义 REST API 接口,通过注解来…

备战蓝桥杯---动态规划(入门1)

先补充一下背包问题: 于是,我们把每一组当成一个物品,f[k][v]表示前k组花费v的最大值。 转移方程还是max(f[k-1][v],f[k-1][v-c[i]]w[i]) 伪代码(注意循环顺序): for 所有组: for vmax.....0…

Linux_信号

一个进程退出有两种情况:1.正常执行完毕。2.程序执行中异常退出。第一种情况可以通过进程退出码来获取进程执行结果,第二种情况需要通过信号来判断进程异常退出原因。那么进程在什么样的条件下会产生信号,进程又是怎样处理产生的信号呢&#…

2.13学习总结

1.出差(Bleeman—ford)(spfa) (dijkstra) 2.最小生成树(prim)(Kruskal) 最短路问题: 出差https://www.luogu.com.cn/problem/P8802 题目描述 AA …

mysql8.0.36主从复制(读写分离)配置教程

1、关闭防火墙 使用命令行关闭防火墙 在Ubuntu系统中,可以使用以下命令关闭防火墙: sudo ufw disable执行该命令后,系统会提示是否要关闭防火墙,确认后即可关闭防火墙。 查看防火墙状态 使用以下命令可以查看防火墙当前的状…

React18原理: 时间分片技术选择

渲染1w个节点的不同方式 1 &#xff09;案例1&#xff1a;一次渲染1w个节点 <div idroot><div><script type"text/javascript">function randomHexColor() {return "#" ("0000" (Math.random() * 0x1000000 << 0).toS…

单片机学习笔记---DS18B20温度传感器

目录 DS18B20介绍 模拟温度传感器的基本结构 数字温度传感器的应用 引脚及应用电路 DS18B20的原理图 DS18B20内部结构框图 暂存器内部 单总线介绍 单总线电路规范 单总线时序结构 初始化 发送一位 发送一个字节 接收一位 接收一个字节 DS18B20操作流程 指令介…

OpenAI宣布ChatGPT新增记忆功能;谷歌AI助理Gemini应用登陆多地区

&#x1f989; AI新闻 &#x1f680; OpenAI宣布ChatGPT新增记忆功能&#xff0c;可以自由控制内存&#xff0c;提供个性化聊天和长期追踪服务 摘要&#xff1a;ChatGPT新增的记忆功能可以帮助AI模型记住用户的提问内容&#xff0c;并且可以自由控制其内存。这意味着用户不必…

【C++第二阶段】空指针访问成员函数常成员函数常成员属性

你好你好&#xff01; 以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 空指针访问成员函数常成员函数&常成员属性 空指针访问成员函数 类对象类型的空指针可以访问成员函数&#xff0c;但是不能够访问带有成员属性的成员函数。…