STM32的GPIO的八种工作模式

ops/2024/9/23 22:28:04/

GPIO八种工作模式的简介

GPIO八种工作模式特点及应用
输入浮空输入用,完全浮空,状态不定
输入上拉输入用,用内部上拉,默认是高电平
输入下拉输入用,用内部下拉,默认是低电平
模拟功能ADC,DAC
开漏输出软件IIC的SDA、SCL等
推挽输出驱动能力强,25mA(max), 通用输出
开漏式复用功能片上外设功能(硬件IIC的SDA、SCL)
推挽复用功能片上外设功能(SPI的SCK、MISO、MOSI、CS)

输入浮空

  1. 上拉/下拉电阻为断开状态
  2. 施密特触发器打开
  3. 输出被禁止
  4. 输入浮空模式下,IO口的电平完全是由外部电路决定。如果IO引脚没有连接其他的设备,那么检测其输入电平是不确定的。该模式可以用于按键检测,RX1等。
    在这里插入图片描述

输入上拉

  1. 上拉电阻导通,
  2. 施密特触发器打开,
  3. 输出被禁止。
  4. 在需要外部上拉电阻的时候,可以使用内部上拉电阻,这样可以节省一个外部电阻,但是内部上拉电阻的阻值较大,
    所以只是“弱上拉”,不适合做电流型驱动.
  5. 如果外部输入高电平,则输入寄存器读取到的值为1,如果外部输入低电平,则输入寄存器读取的值为0。
  6. 如果外部处于空闲状态(高阻状态),则由于上拉电阻导通,则默认为高电平,则输入寄存器读取的值为1.

在这里插入图片描述

输入下拉

  1. 下拉电阻导通
  2. 施密特触发器打开,
  3. 输出被禁止。
  4. 在需要外部下拉电阻的时候,可以使用内部下拉电阻,这样可以节省一个外部电阻,但是内部下拉电阻的阻值较大,
    所以不适合做电流型驱动。
  5. 如果外部输入高电平,则输入寄存器读取到的值为1,如果外部输入低电平,则输入寄存器读取的值为0。
  6. 如果外部处于空闲状态(高阻状态),则由于下拉电阻导通,则默认为低电平,则输入寄存器读取的值为0.
    在这里插入图片描述

模拟输入

  1. 上下拉电阻断开
  2. 施密特触发器关闭
  3. 双 MOS管也关闭
  4. 该模式用于 ADC采集或者 DAC 输出,或者低功耗下省电。
    在这里插入图片描述

开漏输出

  1. 施密特触发器打开,即IO的输入功能是打开的,输入寄存器可以读取输出的电压是高还是低
  2. 开漏模式下,P-MOS 管是一直截止的,所以 P-MOS 管的栅极一直接 VSS。如果输出数据寄存器设置为 0 时,经过“输出控制”的逻辑非操作后,输出逻辑 1 到 N-MOS 管的栅极,这时 N-MOS 管就会导通,使得 I/O 引脚接到 VSS,即输出低电平。如果输出数据寄存器设置为 1时,经过“输出控制器”的逻辑非操作后,输出逻辑 0到 NMOS 管的栅极,这时 N-MOS 管就会截止。因为 P-MOS 管是一直截止的,使得 I/O 引脚呈现高阻态,即不输出低电平,也不输出高电平。因此要 I/O 引脚输出高电平就必须接上拉电阻。这时可以接内部上拉电阻,或者接一个外部上拉电阻。由于内部上拉电阻的阻值较大,所以只是“弱上拉”。需要大电流驱动,请接外部的上拉电阻。此外,上拉电阻具有线与特性,即如果有很多开漏模式的引脚连在一起的时候,只有当所有引脚都输出高阻态,电平才为 1,只要有其中一个为低电平时,就等于接地,使得整条线路都为低电平0。我们的IIC通信(IIC_SDA)就用到这个原理。
  3. 对第三点的总结,其特点是:P-MOS管始终不导通,N-MOS管只能输出低电平,如果需要输出高电平,则需要上拉电阻。
    在这里插入图片描述

开漏复用功能

  1. 施密特触发器打开,即IO的输入功能是打开的,输入寄存器可以读取输出的电压是高还是低
  2. P-MOS管始终不导通
  3. 其输出由其他外设控制,而不是由输出寄存器控制
  4. 特点:只能输出低电平,如果要输出高电平,则需要内部(外部)上拉电阻。
    在这里插入图片描述

推挽输出

  1. 施密特触发器打开,即IO的输入功能是打开的,输入寄存器可以读取输出的电压是高还是低
  2. 往输出寄存器写0,则N-MOS导通,输出低电平
  3. 往输出寄存器写1,则P-MOS导通,输出高电平
  4. 由于推挽输出模式输出高电平时,是直接连接 VDD ,所以驱动能力较强,可以做电流型
    驱动,驱动电流最大可达 25mA。该模式也是最常用的输出模式。

在这里插入图片描述

推挽复用功能

  1. 施密特触发器打开,即IO的输入功能是打开的,输入寄存器可以读取输出的电压是高还是低
  2. 由其他外设来控制电平输出。
  3. 可以输出高电平,也可以输出低电平
  4. 驱动能力强

在这里插入图片描述


http://www.ppmy.cn/ops/114991.html

相关文章

MySQL:事务隔离级别

SQL 标准定义了四个隔离级别: READ-UNCOMMITTED(读取未提交) :最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。READ-COMMITTED(读取已提交) :允许读取并发事务已经提交的数据&#xf…

HTML贪吃蛇游戏

文章目录 贪吃蛇游戏 运行效果注意代码 贪吃蛇游戏 贪吃蛇是一款经典的休闲益智游戏。本文将通过HTML5和JavaScript详细解析如何实现一个简易版的贪吃蛇游戏。游戏的主要逻辑包括蛇的移动、碰撞检测、食物生成等功能。以下是游戏的完整代码及注释解析。(纯属好玩&a…

安全带检测系统源码分享

安全带检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

vim编辑器的简单使用

定义:Vim 是一个功能强大的文本编辑器,广泛用于编程和服务器环境。 Vim 的三种主要模式 命令模式(Normal Mode):默认进入的模式,在该模式下,你可以执行各种命令,如保存、退出、删除…

UE5——在线子系统

Unreal Engine 5 (UE5) 的在线子系统(Online Subsystem)实现多人在线游戏的原理涉及到网络编程和分布式系统设计中的多个方面。以下是该系统工作的一些核心概念和技术: 1. 客户端-服务器架构: - 大多数现代多人在线游戏采用客户端-服务器模型…

CTFShow-反序列化

一些基础: private变量会被序列化为:\x00类名\x00变量名 protected变量会被序列化为: \x00*\x00变量名 public变量会被序列化为:变量名 __sleep() //在对象被序列化之前运行 * __wakeup() //将在反序列化之后立即调用(当反序列化时…

Qt 类型选择器和类选择器的区别

概念上的区别请查看此篇博客:Qt 样式表、选择器、盒子模型,下面我直接举例说明。 示例界面: 1、类型选择器: QWidget {background-color: rgb(255, 85, 127); }运行结果(因为QPushButton是QWidget的子类&#xff0…

Springboot提升-MapStruct组件使用

文章目录 1. 添加依赖2. 创建映射接口3. 在Spring Boot中使用MapStruct映射器4. 配置MapStruct 在Spring Boot项目中使用MapStruct可以帮助你更方便地管理对象之间的映射逻辑。下面是一些基本步骤来设置和使用MapStruct: 1. 添加依赖 首先,你需要在项目…