STM32F103:GPIO八种工作原理详解

本文章技术信息均出自:STM32F103系列超详细参考手册-中文版


一、GPIO简介

GPIO就是通用I/O(输入/输出)端口,是STM32可控制的引脚。
STM32芯片的GPIO引脚与外部设备连接起来,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

二、GPIO工作模式

1. 四种输入模式

  • GPIO_Mode_IN_FLOATING 浮空输入模式
  • GPIO_Mode_IPU 上拉输入模式
  • GPIO_Mode_IPD 下拉输入模式
  • GPIO_Mode_AIN 模拟输入模式

2. 四种输出模式

  • GPIO_Mode_Out_OD 开漏输出模式
  • GPIO_Mode_Out_PP 推挽输出模式
  • GPIO_Mode_AF_OD 复用开漏输出模式
  • GPIO_Mode_AF_PP 复用推挽输出模式

三、GPIO工作原理解析

1. I/O端口的基本结构框图

在这里插入图片描述

2. I/O端口的基本结构介绍

保护二极管

作用: 防止引脚外部输入过高和过低的电压,防止不正常电压引入芯片,导致芯片烧毁。
当引脚电压高于VDD时,上方的二极管导通。
当引脚电压低于VSS时,下方的二极管导通。

上拉电阻和下拉电阻

作用: 控制引脚默认状态的电压。
开启上拉的时候,引脚默认电压为高电平。
开启下拉的时候,引脚默认电压为低电平。

TTL肖特基触发器

TTL肖特基触发器其实可以理解为用肖特基管构成的施密特触发器
作用: 将相对缓慢变化的模拟信号变成矩形信号。
当输入电压高于正向阈值电压,输出为高。
当输入电压低于负向阈值电压,输出为低。

P-MOS管和N-MOS管

作用: 使得GPIO具有“推挽输出”和“开漏输出”的模式。
P-MOS管: MCU输出为 1 导通,低电平关闭。
N-MOS管: MCU输出为 0 导通,高电平关闭。

3. GPIO工作模式解析

浮空输入模式

浮空输入模式下,I/O端口的电平信号直接进入到输入数据寄存器
MCU直接读取I/O口电平,I/O的电平状态是不确定的,完全由外部输入决定。

I/O引脚MCU读取
引脚悬空
外部无信号输入
不确定
高电平高电平
低电平低电平

在这里插入图片描述

上拉输入模式

上拉输入模式下, I/O端口的电平信号经过上拉电阻进入到输入数据寄存器。

I/O引脚MCU读取
引脚悬空
外部无信号输入
高电平
高电平高电平
低电平低电平

在这里插入图片描述
STM32的内部上拉是"弱上拉",即通过此上拉输出的电流是很弱的,如要求大电流还是需要外部上拉。

下拉输入模式

下拉输入模式下, I/O端口的电平信号经过下拉电阻进入到输入数据寄存器。

I/O引脚MCU读取
引脚悬空
外部无信号输入
低电平
高电平高电平
低电平低电平

在这里插入图片描述

模拟输入模式

模拟输入模式下, I/O端口的电平信号不经过TTL肖特基触发器,直接进入ADC模块,并且输入数据寄存器为空 ,MCU不能在输入数据寄存器上读到引脚状态。
在模拟输入模式下,上拉电阻和下拉电阻是不起作用的,即使配置上拉和下拉模式,也不会有作用。
在这里插入图片描述

开漏输出模式

开漏输出模式下, P-MOS管不工作,只有N-MOS管工作,MCU只能控制输出低电平。
MCU输出低电平的时候,N-MOS管导通,I/O引脚输出低电平。
MCU输出高电平的时候,N-MOS管关闭,I/O引脚悬空状态。
在这里插入图片描述

推挽输出模式

推挽输出模式下, P-MOS管和N-MOS管都工作,MCU可以控制输出高电平和低电平。
MCU输出为 0 的时候,N-MOS管导通,I/O引脚输出低电平。
MCU输出为 1 的时候,P-MOS管导通,I/O引脚输出高电平。
在这里插入图片描述

复用开漏输出模式

复用开漏输出模式下, GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效, 输出的高低电平的来源于其它外设。
在这里插入图片描述

复用推挽输出模式

复用推挽输出模式下, GPIO复用为其他外设,输出数据寄存器GPIOx_ODR无效, 输出的高低电平的来源于其它外设。
在这里插入图片描述


  • 13
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

根号五

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值