STM32-GPIO八种输入输出模式

图片取自  江协科技 STM32入门教程-2023版 细致讲解 中文字幕 p5

【STM32入门教程-2023版 细致讲解 中文字幕】 https://www.bilibili.com/video/BV1th411z7sn/?p=5&share_source=copy_web&vd_source=327265f5c70f26411a53a9226af0b35c

目录

​编辑

一.STM32的四种输入方式

1、上拉输入(GPIO_Mode_IPU)

 2、下拉输入(GPIO_Mode_IPD)

3、模拟输入(GPIO_Mode_AIN)

4、浮空输入(GPIO_Mode_IN_FLOATING)    

二.STM32的四种输出方式

1、普通推挽输出(GPIO_Mode_Out_PP)

2、普通开漏输出(GPIO_Mode_Out_OD)

​编辑

3、复用推挽输出(GPIO_Mode_AF_PP)

4、复用开漏输出

三.结束语


一.STM32的四种输入方式

1、上拉输入(GPIO_Mode_IPU)

        图片1处信号进入芯片后加了一个上拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平

// 初始化上拉输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;          // 上拉输入模式
GPIO_InitStruct.Pull = GPIO_PULLUP;              // 上拉输入
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

 2、下拉输入(GPIO_Mode_IPD)

        图片2处信号进入芯片后加了一个上拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平

// 初始化下拉输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;          // 下拉输入模式
GPIO_InitStruct.Pull = GPIO_PULLDOWN;            // 下拉输入
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

3、模拟输入(GPIO_Mode_AIN)

        信号进入后不经过上拉电阻或者下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。

// 初始化模拟输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;         // 模拟输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

4、浮空输入(GPIO_Mode_IN_FLOATING)    

        信号进入芯片内部后,既没有接上拉电阻也没有接下拉电阻,经由触发器输入。

// 初始化浮空输入模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;          // 浮空输入模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

二.STM32的四种输出方式

1、普通推挽输出(GPIO_Mode_Out_PP)

用在0V和3.3V的场合。线路经过两个P_MOS 和N_MOS 管,负责上拉和下拉电流。

可以直接使用,推挽输出的低电平是0V,高电平是3.3V。

// 初始化复用推挽输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode =GPIO_Mode_Out_PP;          // 普通推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

2、普通开漏输出(GPIO_Mode_Out_OD)

用在电平不匹配的场合,需要输出5V的高电平的时候。用的时候就需要再外部接一个上拉电阻,电源为5V,把GPIO设置为开漏模式,

// 初始化复用推挽输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_Mode_Out_OD;          // 普通开漏输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

3、复用推挽输出(GPIO_Mode_AF_PP)

串口的输出

// 初始化复用推挽输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;          // 复用推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

4、复用开漏输出

IIC

// 初始化复用开漏输出模式的GPIO
GPIO_InitStruct.Pin = GPIO_PIN_0;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;          // 复用开漏输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;              // 不设置上拉或下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;    // GPIO速度设置为高速
HAL\_GPIO\_Init(GPIOA, &GPIO_InitStruct);

三.结束语

以上就是对STM的输入输出的一个总结.

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

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

相关文章

达梦数据库创建根据日期按月自动分区表

达梦数据库创建根据日期自动分区表 概念 达梦数据交换平台(简称DMETL)是在总结了众多大数据项目经验和需求并结合最新大数据发展趋势和技术的基础上,自主研发的通用的大数据处理与集成平台。 DMETL创新地将传统的ETL工具(Extract、Transform、Loading…

maven默认src下的xml,properties文件不打包到classes文件夹下

一、第一种是建立src/main/resources文件夹,将xml,properties等资源文件放置到这个目录中。maven工具默认在编译的时候,会将resources文件夹中的资源文件一块打包进classes目录中。 这时候注意把resources设置成resource目录,已经…

CI/CD 管道中的自动化测试:类型和阶段

在上一篇文章中,我们讨论了敏捷团队自动化测试用例的各种用例。其中一种情况是,团队希望将测试与每个构建集成,并将持续集成作为构建过程的一部分。 在本文中,我们将讨论持续集成/持续交付平台中的集成测试。 让我们先从基础知识…

Sentinel Dashboard 规则联动持久化方案

一、Sentinel Dashboard 规则联动持久化方案 Sentinel 是阿里开源的一个流量控制组件,它提供了一种流量控制、熔断降级、系统负载保护等功能的解决方案。并且我们通过 Sentinel Dashboard 可以非常便捷的添加或修改规则策略,但是如果细心的小伙伴应该可…

Jenkins、GitLab部署项目

1、安装JDK 1.1、下载openJdk11 yum -y install fontconfig java-11-openjdk1.2、查看安装的版本号 java -version1.3、配置环境变量 vim /etc/profile在最底部添加即可 export JAVA_HOME/usr/lib/jvm/java-11-openjdk-11.0.23.0.9-2.el7_9.x86_64 export PATH$JAVA_HOME/…

经典链表题-链表回文结构

🎉🎉🎉欢迎莅临我的博客空间,我是池央,一个对C和数据结构怀有无限热忱的探索者。🙌 🌸🌸🌸这里是我分享C/C编程、数据结构应用的乐园✨ 🎈🎈&…

神经网络的工程基础(一)——利用PyTorch实现梯度下降法

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下:regression2chatgpt/ch06_optimizer/gradient_descent.ipynb 本文将讨论利用PyTorch实现…

BFS 解决最短路问题

目录 一、前言 1.1 如何使用 BFS 找到最短路: 1.2 为什么不用 dfs : 二、模板套路 三、例题练习 3.1 例题1:迷宫中离入口最近的出口 3.2 例题2:最小基因变化 3.3 例题3:单词接龙 3.4 例题4:为高尔…

HTML橙色爱心

目录 写在前面 准备开始 完整代码 运行结果 系列文章 写在后面 写在前面 本期小编给大家分享一颗热烈且浪漫的爱心,快来看看吧! 准备开始 在开始之前,我们需要先简单的了解一下这颗爱心的原理哦~ 本期将用html实现这颗跳动的爱心&a…

YOLOv9改进策略 | 图像去雾 | 利用图像去雾网络UnfogNet辅助YOLOv9进行图像去雾检测(全网独家首发)

一、本文介绍 本文给大家带来的改进机制是利用UnfogNet超轻量化图像去雾网络,我将该网络结合YOLOv9针对图像进行去雾检测(也适用于一些模糊场景),我将该网络结构和YOLOv9的网络进行结合同时该网络的结构的参数量非常的小,我们将其添加到模型里增加的计算量和参数量基本可…

跨平台之用VisualStudio开发APK嵌入OpenCV(二)

开始干 新建解决方案,新建动态库(Android)项目 功能随便选一个吧,就模仿PS(Photoshop)的透视裁切功能,一个物体(比如扑克牌)透视图,选4个顶点,转…

python文件处理之os模块和shutil模块

目录 1.os模块 os.path.exists(path):文件或者目录存在与否判断 os.path.isfile(path):判断是否是文件 os.path.isdir(path):判断是否是文件夹 os.remove(path):尝试删除文件 os.rmdir(path):尝试删除目录 os.m…

vue项目elementui刷新页面弹窗问题

bug:每次刷新页面都有这个鬼弹窗。 刚开始以为是自己的代码问题,于是我翻遍了每一行代码,硬是没找出问题。 后来在网上找了些资料,原来是引入的问题。 解决方案: 改一下引入方式即可。 错误姿势 import Vue from …

美发店服务预约会员小程序的作用是什么

美发店不同于美容美甲,男女都是必需且年龄层几乎不限,商家在市场拓展时只要方法得当相对比较容易,当今客户适应于线上信息获取、咨询及实际内容开展,商家也需要赋能和提升自身服务效率,合理化管理。 运用【雨科】平台…

2024年【高压电工】新版试题及高压电工找解析

题库来源:安全生产模拟考试一点通公众号小程序 高压电工新版试题是安全生产模拟考试一点通生成的,高压电工证模拟考试题库是根据高压电工最新版教材汇编出高压电工仿真模拟考试。2024年【高压电工】新版试题及高压电工找解析 1、【单选题】 110KV及以下…

文件批量重命名利器:一键轻松替换文本间内容,高效管理文件不再是难题!

在信息爆炸的时代,我们的电脑中堆积了无数的文件。这些文件可能包含重要的工作资料、珍贵的个人回忆或是各种学习资料。然而,随着文件的不断增多,如何高效地管理和查找这些文件成为了一个头疼的问题。 文件批量改名高手是一款专业的文件管理…

在IDEA中配置servlet(maven配置完成的基础下)

在IDEA中配置servlet&#xff08;maven配置完成的基础下&#xff09; 1.先新建一个项目 2.选择尾巴是webapp的&#xff0c;名称自定义 3.点击高级设置&#xff0c;修改组id 点击创建&#xff0c;等待jar包下载完成。在pom.xml中配置以下 <dependency><groupId>ja…

docker同步bilibili收藏视频到群晖,可配合emby

作者是amtoaer&#xff0c;在github项目地址&#xff1a;https://github.com/amtoaer/bili-sync 有两个版本&#xff0c;1.0和2.0&#xff0c;我使用的是2.0 PS2&#xff1a;2.0和1.0版本目录结构不兼容&#xff0c;所以部署后会全量重新下载视频。 演示&#xff1a; 依然是…

OpenH264 编解码器介绍

思科 思科系统&#xff08;英语&#xff1a;Cisco Systems, Inc.&#xff09;是一间跨国际综合技术企业&#xff0c;总部设于加州硅谷&#xff1b;思科开发、制作和售卖网络硬件、软件、通信设备等高科技产品及服务&#xff0c;并透过子公司&#xff08;例子有OpenDNS、Webex、…

国赛练习(1)

Unzip 软连接 软连接是linux中一个常用命令&#xff0c;它的功能是为某一个文件在另外一个位置建立一个同步的链接。换句话说&#xff0c;也可以理解成Windows中的快捷方式 注意&#xff1a;在创建软连接的文件的所有目录下不能有重名的文件 打开环境&#xff0c;是文件上传&am…