STM32F1系列GPIO的八种工作模式

简介: 以STM32的F1系列为例,用最通俗易懂的大白话教会你外设GPIO的8种工作模式。并附流程图,有助于加深理解

这篇文章

GPIO的八种工作模式

八种工作模式概括

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

接下来,就用通俗易懂的话来解释一下各个工作模式的特点以及工作流程

GPIO结构框图

附图:GPIO结构框图
==① 保护二极管 ② 内部上拉、下拉电阻 ③ 施密特触发器 P-MOS & N-MOS管==

输入浮空模式
  • 特点:IO口电平完全由外部电路决定
  • 原件开关情况:上下拉电阻断开,施密特触发器打开,输出模块被禁止
  • 应用:常用于按键检测
输入上拉模式
  • 特点:空闲时,IO呈现高电平
  • 原件开关情况:上拉电阻接通,下拉电阻断开,施密特触发器打开,输出模块被禁止
  • 应用:需要“弱上拉”的情况,可节省一个外部电阻
输入下拉模式
  • 特点:空闲时,IO呈现低电平
  • 原件开关情况:上拉电阻断开,下拉电阻导通,施密特触发器打开,输出模块被禁止
  • 应用:可节省一个外部电阻
模拟功能
  • 特点:(1)走的路比较独特。数据输入不经过数据输入寄存器,而是直接走模拟输入通道(2)该模式下需要用到芯片内部的模拟电路单元
  • 原件开关情况:上拉电阻断开,下拉电阻断开,施密特触发器关闭,输出模块被禁止
  • 应用:用于模拟信号输入或输出场景,如:ADC和DAC
开漏输出
  • 特点:只能输出低电平Vss或者高阻态。必须有外部上拉电阻才能输出高电平(对于F1系列来说)
  • 应用:常用于 IIC 通讯或其它需要进行电平转换的场景。
  • 首先要明确三点:

    (1)在开漏输出模式下,P-MOS管永远处于截止状态(即不导通),因此 IO 的状态取决于 N-MOS 的导通状况

    (2)输出数据寄存器的输出数据都会进行一次“输出控制”的取反操作

    (3)施密特触发器仍然工作,但上下拉电阻不工作,所以输入部分可以看成浮空输入,可以读取到IO口的工作状态

  • IO的输出过程:(请对照GPIO结构框图学习)(在上面)
    可以分为向输出寄存器输出逻辑1和0两种情况:

    1. 输出数据寄存器输出逻辑0 --> “输出控制”进行取反操作 --> 逻辑1到达N-MOS的栅极 --> N-MOS输出低电平
    2. 输出数据寄存器输出逻辑1 -> “输出控制”进行取反操作 -> 逻辑0到达N-MOS的栅极 -> N-MOS被截止 -> IO呈现高阻态(既不输出高,也不输出低)
    3. 其示意图如下:

    tmpB977.png

开漏复用功能

当GPIO处于该种工作模式时,其与开漏模式基本相同

唯一的区别就是:IO口输出的东西不再受输出数据寄存器影响,而是由其他的外设来控制输出

推挽输出
  • 特点:即可以输出低电平 VSS 也可以输出高电平VDD。且输出的最大电流能达到25mA的驱动电流,具有较强的驱动能力。
  • 首先明确两点:
    (1)推挽模式下,P-MOS 管和 N-MOS 管同时起作用

    (2)输出数据寄存器的输出数据都会进行一次“输出控制”的取反操作

  • IO的输出过程:(请对照GPIO结构框图学习)(在上面)
    仍然可以分为向输出寄存器输出逻辑1和0两种情况:

    1. 输出数据寄存器输出逻辑0 --> “输出控制”进行取反操作 --> 逻辑1到达P-MOS的栅极 --> P-MOS管被截止 --> 输出逻辑1到 N-MOS 管的栅极 --> N-MOS导通 --> IO接到VSS --> 输出低电平
    2. 输出数据寄存器输出逻辑1 --> “输出控制”进行取反操作 --> 逻辑0到达N-MOS的栅极 --> N-MOS管被截止 --> 输出逻辑0到 P-MOS 管的栅极 --> P-MOS导通 --> IO接到VDD --> 输出高电平

其示意图如下:
tmpFE9B.png

综上所述,我们可知:

  • 推挽输出模式下,P-MOS 管和 N-MOS 管同一时间只能有一个管是导通的。
  • 当 IO 引脚在做高低电平切换时,两个管子轮流导通,一个负责灌电流,一个负责拉电流,使其负载能力和开关速度都有较大的提高。
推挽复用功能

当GPIO处于该种工作模式时,其与推挽模式基本相同

唯一的区别就是:IO口输出的东西不再受输出数据寄存器影响,而是由其他的外设来控制输出

F4/F7/H7系列和F1系列的GPIO差异点
  1. F1在输出模式,禁止使用内部上下拉
    F4/F7/H7在输出模式,可以使用内部上下拉
  2. 不同系列IO翻转速度可能不同
相关文章
|
6月前
|
存储
STM32F103标准外设库——GPIO 输入、输出 (五)
STM32F103标准外设库——GPIO 输入、输出 (五)
370 0
STM32F103标准外设库——GPIO 输入、输出 (五)
|
4月前
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
stm32f407探索者开发板(八)——按键输入实验--GPIO做输入
|
芯片
STM32速成笔记(二)—GPIO
本文介绍了STM32的GPIO的配置和使用方法,并且给出了应用实例。此外,针对使用时可能遇到的一些问题给出了解决办法。
368 0
STM32速成笔记(二)—GPIO
|
4月前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
153 0
|
5月前
经验大分享:STM32F4寄存器初始化系列:GPIO
经验大分享:STM32F4寄存器初始化系列:GPIO
30 0
|
6月前
|
芯片
STM32 GPIO工作原理详解
STM32 GPIO工作原理详解
104 0
No.5 STM32F429IGT6 标准库实战GPIO输出LED灯 点亮闪烁(STM32F429/F767/H743)
No.5 STM32F429IGT6 标准库实战GPIO输出LED灯 点亮闪烁(STM32F429/F767/H743)
STM32F0单片机快速入门五 GPIO中断
STM32F0单片机快速入门五 GPIO中断
|
存储 数据采集 芯片
No.4 STM32F429IGT6 GPIO相关学习总结(STM32F429/F767/H743)
No.4 STM32F429IGT6 GPIO相关学习总结(STM32F429/F767/H743)