【江协科技STM32视频总结】CH3-1 GPIO 输出

GPIO 简介

  • GPIO(General Purpose Input Output)通用输入输出口
  • 可配置为8种输入输出模式
  • 引脚电平:0V~3.3V,部分引脚可容忍5V:
    数据 0 为低电平,即 0V
    数据 1 为高电平,即 3.3V
    容忍5V: 可以在这个端口输入5V电压认作高电平,但是对于输出而言 3.3Vmax,因为供电只有3.3v。可以容忍5V的引脚参照STM32引脚定义,I/O口电平显示为FT(five tolerance)
  • 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
    如果是控制比较大的设备,只需要再加入驱动电路
    模拟通信协议输出时序: I2C,SPI或者某个芯片特定协议可以用 GPIO的输出模式来模拟其中的输出时序模式
  • 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

GPIO 基本结构

在 STM32 中 所有的GPIO都是挂载在APB2外设总线上的
GPIO 命名按照 **GPIO[A…E]**来命名
在这里插入图片描述输出寄存器写 1 输出 1 高电平,写 0 输出 0 低电平
输入寄存器读取 1 证明目前端口高电平,vice versa

STM32 内部寄存器为32位,但是只有16位端口,所以低16位有对应端口,高16位没有

驱动器用于增加信号驱动能力:e.g 点灯大部分操作

GPIO 位结构在这里插入图片描述

IO引脚

在这里插入图片描述

  • 保护二极管对输入电压进行限幅:VDD 接 3.3V VSS 接 0V。
    如果输入电压 > 3.3V,上方二极管导通,输入电压产生电流直接流入VDD而不会流入内部电路
    如果输入电压 < 0V(这个电压是相对于VSS的电压,所以可以有负电压),下方二极管导通,电流从VSS直接流出
    如果在0V-3.3V,两个二极管不会导通,此时二极管对电路没有影响

开关部分

  • 上通下开,上拉输入模式 ,默认为高电平输入模式
  • 下通上开,下拉输入模式 ,默认为低电平输入模式
  • 都断开,浮空输入模式(即输入什么都不接,引脚的输入电平极易受外界干扰而改变)

上拉下拉的作用:为了给输入提供一个默认输入电平。
阻值大:作为弱上拉和弱下来,目的是尽量不影响正常的输入操作

施密特触发器

  • 作用:对输入电压进行整型
  • 执行逻辑:如果输入电压 > 某一阈值,输出瞬间升为高电平;…<…,…降为低电平
  • 绿线为比较阈值
  • 绿线中间表示留有的变化范围,可以有效避免因信号波动造成的输出抖动现象

输入数据寄存器

  • 被经过施密特触发器整形的波形直接写入。再用程序读取输入数据寄存器对应某一位的数据,得到端口的输入电平。

连接片上外设的一些端口

  • 模拟输入:连接ADC。因为ADC需要接收模拟量,所以线接在施密特触发器前
  • 复用功能输入:连接其他需要读取端口的外设上,如 串口的输入引脚。因为接收数字量,所以在施密特触发器后。

输出部分

两种控制方式:在这里插入图片描述

  • 输出数据寄存器:普通的IO口输出
  • 未设置/清楚寄存器:单独操作输出寄存器的某一位,不影响其他位
  • 补充 单独控制某一端口 的方法(2种):
  1. 先读出该寄存器,按位与和按位或更改某一位(即C语言中 &= 和 |= 的方法),更改后写回。比较麻烦且效率低,对于IO口的操作而言不太合适。
  2. 通过设置 未设置/清除寄存器, 一步到位 (库函数的操作方法)
  3. 读写STM32 位带 区域(在STM32种专门有一段地址区域,映射了RAM和外设寄存器所有的位)

MOS管
三种输出方式

  • 推挽(P&N-MOS均有效):
    数据寄存器为 1, 上通下断,输出直连VDD,输出高电平
    … 0, 上断下通, 输出直连VSS,输出低电平
    这种模式下,高低电平均有较强的驱动能力,推挽输出也叫强推输出模式。该模式下,STM32决定高低电平
  • 开漏输出(N-MOS工作)
    数据寄存器为1,下断,相当于输出断开,高阻模式
    …0,下通,直连VSS,输出低电平
    该模式可以作为通信协议的驱动方式,e.g.I2C通信引脚。在多机通信的情况下,该模式可以避免各个设备的相互干扰。
    还可以用于输出5V 的电平信号
  • 关闭(P&N均无效)
    端口电平由外部信号控制

GPIO 模式

见PPT

GPIO 寄存器

低/高寄存器 见STM32手册 CH8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值