当前位置: 首页 > news >正文

stm32之GPIO电路介绍

文章目录

      • 1 GPIO介绍
      • 2 GPIO的工作模式
        • 2.1 浮空输入
        • 2.2 上拉输入
        • 2.3 下拉输入
        • 2.4 模拟输入
        • 2.5 开漏输出
        • 2.6 推挽输出
        • 2.7 复用开漏输出
        • 2.8 复用推挽输出
        • 2.9 其他
      • 3 应用方式
      • 4 常用库函数

1 GPIO介绍

请添加图片描述

  • 保护二极管:保护引脚,让引脚的电压位于正常的范围
  • 施密特触发器:将外部的模拟信号转换为数字信号
  • 上/下拉电阻:通过控制开关,可以设置输入引脚的默认电平状态
  • 输入数据寄存器:外部引脚电平转换为数字信号后保存到输入数据寄存器,然后由内部处理器读取
  • 输出数据寄存器:内部处理器将数据写入输出数据寄存器,然后通过输出控制电路输出到外部引脚
  • 位设置/清除寄存器:该寄存器用于修改输出数据寄存器中的某一位的值

2 GPIO的工作模式

2.1 浮空输入

请添加图片描述

数据流向:电压直接由GPIO引脚通过施密特触发器转化为高低电平后,将数据存储到输入数据寄存器中,微处理器就可以读取输入寄存器的数据。

特点:处于该模式的GPIO口未接外设,处于悬空状态时,引脚的电平是不确定的,此时读取输入寄存器的值是不确定的。

2.2 上拉输入

请添加图片描述

与浮空输入的区别在于,上拉输入模式下,上拉电阻上方的开关会闭合,I/O端口的电压就会Vdd小一点,也就是说,当引脚属于悬空状态时,引脚默认是高电平。

数据流向:与浮空输入相同。

特点:当输入引脚悬空时,输入是高电平。

2.3 下拉输入

请添加图片描述

与浮空输入的区别在于,上拉输入模式下,上拉电阻上方的开关会闭合,I/O端口的电压就会Vss大一点,也就是说,当引脚属于悬空状态时,引脚默认是低电平。

数据流向:与浮空输入相同。

特点:当输入引脚悬空时,输入是低电平。

2.4 模拟输入

请添加图片描述

浮空输入、上拉输入、下拉输入模式下,输入的都是数字信号,而模拟输入是直接将外部的模拟信号输入,因此,上拉电阻、下拉电阻、施密特触发器的开关都会断开,输入引脚的电平直接到内部。

数据流量:外部端口引脚直接连接到内部进行模拟输入。

特点:用于模拟信号的输入。

注意:只有ADC和DAC需要将IO端口配置为模拟通道,其他外设功能需要将IO配置为复用功能模式。

2.5 开漏输出

请添加图片描述

数据流向:处理器将数据写入输出数据寄存器,写入过程中可以通过位设置/清除寄存器(BSRR)修改单个位的数据,输出数据寄存器中的数据通过输出控制电路,然后通过N-MOS管到达外部输出引脚。同时,外部引脚的电平还可以通过浮空输入模式读取。

特点:当输出数据0时,N-MOS管导通,输出低电平;当输出数据1时,N-MOS管截止,输出引脚为高阻态(如果需要输出高电平,需要外接上拉电阻)。

2.6 推挽输出

请添加图片描述

特点:当输出数据0时,输出低电平;当输出1时,输出高电平。开关速度快,负载能力强,是最常使用的输出模式。

2.7 复用开漏输出

请添加图片描述

特点:与开漏输出的区别是,复用开漏输出是从片上外设输出。

2.8 复用推挽输出

请添加图片描述

特点:与推挽输出的区别是,复用推挽输出是从片上外设输出,串口通信中经常使用复用推挽输出。

2.9 其他

上电复位后,GPIO引脚默认为浮空状态,部分特殊引脚为特定状态。

3 应用方式

  • 普通GPIO输入:配置引脚为浮空输入、上拉输入、下拉输入,不使能该引脚的复用功能模块。
  • 普通GPIO输出:配置引脚为推挽输出、开漏输出,不使能该引脚的复用功能模块。
  • 模拟输入:配置引脚为模拟输入,不使能该引脚的复用功能模块。
  • 内置外设的输入:配置该引脚为浮空输入、上拉输入、下拉输入,使能该引脚的复用功能模块。
  • 内置外设的输出:配置该引脚为复用推挽输出、复用开漏输出,使能该引脚的复用功能模块。

注:常规使用GPIO时,输出通常使用推挽输出,输入则使用上拉输入或者下拉输入,具体需要根据外部器件的电路确定。

4 常用库函数

  • GPIO_Init:初始化
  • GPIO_ReadInputDataBit/GPIO_ReadInputData:读取某个口的输入电平,实际读取的就是输入数据寄存器的值
  • GPIO_ReadOutputDataBit/GPIO_ReadOutputData:读取某个口的输出电平,实际读取的就是输出数据寄存器的值
  • GPIO_SetBits:设置某个口输出高电平,实际操作的是位设置寄存器
  • GPIO_ResetBits:设置某个口输出低电平,实际操作菜单是位清除寄存器

相关文章:

stm32之GPIO电路介绍

文章目录 1 GPIO介绍2 GPIO的工作模式2.1 浮空输入2.2 上拉输入2.3 下拉输入2.4 模拟输入2.5 开漏输出2.6 推挽输出2.7 复用开漏输出2.8 复用推挽输出2.9 其他 3 应用方式4 常用库函数 1 GPIO介绍 保护二极管:保护引脚,让引脚的电压位于正常的范围施密特…...

Unity Toggle处理状态变化事件

Toggle处理状态变化事件,有两个方法。 法一、通过Inspector面板设置 实现步骤: 在Inspector面板中找到Toggle组件的"On Value Changed"事件。单击""按钮添加一个新的监听器。拖动一个目标对象到"None (Object)"字段&am…...

UE5.1 iClone8 正确导入角色骨骼与动作

使用iClone8插件Auto Setup 附录下载链接 里面有两个文件夹,使用Auto Setup C:\Program Files\Reallusion\Shared Plugins 在UE内新建Plugins,把插件复制进去 在工具栏出现这三个人物的图标就安装成功了 iClone选择角色,导入动作 选择导出FBX UE内直接导入 会出现是否启动插件…...

FFmpeg-- c++实现:pcm和yuv编码

文章目录 流程音频视频 api核心代码audioencoder.haudioencoder.cppvideoencoder.hvideoencoder.cpp pcm和yuv编码为aac和h264,封装为c的AudioEncoder类和VideoEncoder类 流程 音频 初始化音频参数 int InitAAC(int channels, int sample_rate, int bit_rate); 音…...

图解CodeWhisperer的安装使用

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 📘 CodeWhisperer简介 &#…...

Python内置对象

Python是一种强大的、动态类型的高级编程语言,其内置对象是构成程序的基础元素。Python的内置对象包括数字、字符串、列表、元组、字典、集合、布尔值和None等,每种对象都有特定的类型和用途。 01 什么是内置对象 这些对象是编程语言的基础构建块&…...

开源数据集 nuScenes 之 3D Occupancy Prediction

数据总体结构 Nuscenes 数据结构 可以看一下我的blog如何下载完整版 mmdetection3d ├── mmdet3d ├── tools ├── configs ├── data │ ├── nuscenes │ │ ├── maps │ │ ├── samples │ │ ├── sweeps │ │ ├── lidarseg (o…...

物联网竞赛板CubMx全部功能简洁配置汇总

目录 前言:1、按键&LED灯配置:2、OLED配置:3、继电器配置:4、LORA模块配置:5、矩阵模块:6、串口模块:7、RTC配置:8、ADC模块配置:9、温度传感器模块:后续…...

使用Redis做缓存的小案例

如果不了解Redis,可以查看本人博客:Redis入门 Redis基于内存,因此查询速度快,常常可以用来作为缓存使用,缓存就是我们在内存中开辟一段区域来存储我们查询比较频繁的数据,这样,我们在下一次查询…...

剧本杀小程序功能介绍

剧本杀功能介绍 剧本杀,一种融合了角色扮演与推理解谜的社交游戏,近年来在年轻人中越来越受欢迎。它不仅可以锻炼参与者的逻辑推理能力,还能增进朋友间的感情,提升团队协作能力。下面,我们将详细介绍剧本杀的核心功能…...

C#基础语法学习笔记(传智播客学习)

最近在学习C#开发知识,跟着传智播客的视频学习了一下,感觉还不错,整理一下学习笔记。 C#基础语法学习笔记 1.背景知识2.Visual Studio使用3.基础知识4.变量5.运算符与表达式6.程序调试7.判断结构8.循环结构9.常量、枚举类型10.结构体类型11.数…...

图论01-DFS和BFS(深搜和广搜邻接矩阵和邻接表/Java)

1.深度优先理论基础(dfs) dfs的两个关键操作 搜索方向,是认准一个方向搜,直到碰壁之后再换方向 换方向是撤销原路径,改为节点链接的下一个路径,回溯的过程。dfs解题模板 void dfs(参数) {if (终止条件) {存放结果;return;}for …...

【Python】Miniconda+Vscode+Jupyter 环境搭建

1.安装 Miniconda Conda 是一个开源的包管理和环境管理系统,可在 Windows、macOS 和 Linux 上运行,它可以快速安装、运行和更新软件包及其依赖项。使用 Conda,我们可以轻松在本地计算机上创建、保存、加载和切换不同的环境 Conda 分为 Anaco…...

Redis消息队列与thinkphp/queue操作

业务场景 场景一 用户完成注册后需要发送欢迎注册的问候邮件、同时后台要发送实时消息给用户对应的业务员有新的客户注册、最后将用户的注册数据通过接口推送到一个营销用的第三方平台。 遇到两个问题: 由于代码是串行方式,流程大致为:开…...

【Ubuntu】常用命令

一般操作 pwd(present working directory) 显示当前的工作目录/路径。 cd (change directory) 改变目录,用于输入需要前往的路径/目录。 有一些特殊命令也很常用 : 解释 前往同一级的另一个目录 cd ../directory name cd .. 表示进入上…...

稀碎从零算法笔记Day22-LeetCode:

题型:链表 链接:2. 两数相加 - 力扣(LeetCode) 来源:Leet 题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 …...

Nacos下载和安装

(1)下载地址和版本 下载地址:Releases alibaba/nacos GitHub 解压在没有中文及空格的文件夹 (2)启动nacos服务 在bin目录下,打开命令行,输入 启动命令:sh startup.sh -m standalone - Linux/Unix/Mac …...

pandas简介(python)

pandas是什么 Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析“三剑客之一”的盛名(NumPy、Matplotlib、Pandas)。Pandas 已经成为 Python 数据分析的必备高级工具,它的…...

个人网站制作 Part 13 添加搜索功能[Elasticsearch] | Web开发项目

文章目录 👩‍💻 基础Web开发练手项目系列:个人网站制作🚀 添加搜索功能🔨使用Elasticsearch🔧步骤 1: 安装Elasticsearch🔧步骤 2: 配置Elasticsearch🔧步骤 3: 创建索引 &#x1f…...

Springboot+vue的仓库管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的仓库管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

Java 加密常用的各种算法及其选择

在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【HTTP三个基础问题】

面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...