当前位置: 首页 > 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)三层…...

网络安全入门实操:在Ubuntu 20.04虚拟机上配置SSH服务并用MobaXterm连接的全流程指南

网络安全实战:Ubuntu 20.04 SSH服务配置与MobaXterm安全连接全解析 在数字化时代,远程安全访问已成为IT基础设施的基石。想象一下,你坐在Windows电脑前,却能无缝操作一台Linux服务器,执行各种系统管理任务——这正是SS…...

Qwen2.5-14B-Instruct微调关键点:Pixel Script Temple中对白张力建模方法解析

Qwen2.5-14B-Instruct微调关键点:Pixel Script Temple中对白张力建模方法解析 1. 项目背景与核心价值 Pixel Script Temple是一款基于Qwen2.5-14B-Instruct深度微调的专业剧本创作工具。这个独特的创作环境将先进的大语言模型能力与8-Bit复古美学设计相结合&#…...

螺旋模型深入分析和总结

螺旋模型(Spiral Model)是由 Barry Boehm 于 1986 年提出的一种风险驱动的软件过程模型。它结合了瀑布模型的系统性与原型模型的迭代性,并引入了风险分析这一关键活动。螺旋模型特别适用于大型、复杂、高风险的软件项目。 一、核心思想 螺旋模型将软件开发过程表示为一个螺…...

深入理解 Python 中的 asyncio.Lock

一、为什么在 asyncio 里仍然需要锁 很多初学者第一次接触 asyncio.Lock 时会有一个典型疑问:asyncio 明明运行在单线程事件循环上,为什么还会需要锁? 这个疑问的根源在于把“单线程”误解成了“不会发生并发冲突”。事实上,async…...

别再死记硬背了!用这3个真实案例,带你彻底搞懂Web安全里的‘协议’与‘文件’(robots.txt, .bak备份, cookie)

从协议到文件:3个实战案例揭秘Web安全核心机制 打开浏览器输入网址,按下回车键的瞬间,一系列你看不见的"对话"正在发生。服务器与客户端之间通过协议交流,而在这个过程中,各种文件扮演着关键角色。理解这些底…...

3分钟掌握QQ音乐解密:qmcdump音频转换完整指南

3分钟掌握QQ音乐解密:qmcdump音频转换完整指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾经下…...

终极指南:Phoenix Pull-to-Refresh与RecyclerView完美集成的实战技巧与最佳实践

终极指南:Phoenix Pull-to-Refresh与RecyclerView完美集成的实战技巧与最佳实践 【免费下载链接】Phoenix Phoenix Pull-to-Refresh 项目地址: https://gitcode.com/gh_mirrors/phoe/Phoenix Phoenix Pull-to-Refresh是一款强大的Android下拉刷新库&#xff…...

nli-MiniLM2-L6-H768真实效果:政务公开信件政策主题识别准确率91.7%

nli-MiniLM2-L6-H768真实效果:政务公开信件政策主题识别准确率91.7% 1. 效果惊艳的零样本分类器 在政务公开信件处理场景中,我们测试了cross-encoder/nli-MiniLM2-L6-H768模型的真实表现。这款轻量级NLI模型在政策主题识别任务上达到了91.7%的准确率&a…...

Qwen3-Reranker参数详解:max_length、batch_size与显存占用关系

Qwen3-Reranker参数详解:max_length、batch_size与显存占用关系 1. 理解Qwen3-Reranker的核心参数 在实际使用Qwen3-Reranker进行语义重排序时,有三个关键参数直接影响着系统的性能和资源消耗:max_length、batch_size和显存占用。理解这些参…...

MedGemma 1.5真实案例:‘腹痛+发热+白细胞升高’的鉴别诊断思维链输出

MedGemma 1.5真实案例:‘腹痛发热白细胞升高’的鉴别诊断思维链输出 1. 案例背景与患者情况 今天我们来分析一个真实的临床案例,展示MedGemma 1.5在医疗诊断推理中的强大能力。这个案例涉及一位虚拟患者,主要症状包括: 腹痛&am…...