STM32单片机的八种GPIO口模式

发布者:MindfulBeing最新更新时间:2024-08-22 来源: elecfans关键字:STM32  单片机 手机看文章 扫描二维码
随时随地手机看文章

GPIO 是通用输入/输出端口的简称,本文以STM32为例进行说明,其他的单片机功能上都是大同小异,学会STM32的GPIO,我们可以触类旁通。


GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。


STM32的八种GPIO口模式

 

1) GPIO_Mode_AIN 模拟输入;
2) GPIO_Mode_IN_FLOATING 浮空输入;
3) GPIO_Mode_IPD 下拉输入;
4) GPIO_Mode_IPU 上拉输入;

5) GPIO_Mode_Out_OD 开漏输出;
6) GPIO_Mode_Out_PP 推挽输出;
7) GPIO_Mode_AF_OD 复用开漏输出;
8) GPIO_Mode_AF_PP 复用推挽输出。

 

STM32 普通 GPIO 内部逻辑图

32b0f416-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。

当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。也叫钳位二极管。

P-MOS管和N-MOS管:

由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。

TTL肖特基触发器:

信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。(可以理解为一个比较器,大于某个值是1,小于某个值是0)

查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;

如果没有标注“FT”,就代表着不兼容5V。比如STM32F103VET6的GPIOE口那一组全部兼容5V,其他组是部分兼容5V。

备注:导通路径为黄色部分。

1、模拟输入 GPIO_Mode_AIN

32d0d83a-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

此模式可以检测外部输入的模拟电压,可以检测电压值,只要不高于Vcc即可。

2、浮空输入 GPIO_MODE_IN_FLOATING

32eb8978-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

此模式最常用的是检测按键,可以接收高低电平。但容易被干扰。

3、下拉输入GPIO_Mode_IPD

3326f7a6-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

此模式检测到电平默认为低,可以检测到由低到高的电平变化。

4、上拉输入GPIO_Mode_IPU

333cf89e-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

此模式检测到电平默认为高,可以检测到由高到低的电平变化。

5、开漏输出GPIO_Mode_Out_OD

33589a4a-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

开漏输出用于输出低电平,高电平靠外部上拉电阻电压决定,适用于快速切换电压的外部电路结构。

6、推挽输出GPIO_Mode_Out_PP

3371d9b0-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

推挽输出用于输出高低电平,是最常用的模式。

7、复用开漏输出GPIO_Mode_AF_OD

33af3fbc-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

复用 IIC 时候选择复用开漏输出,因为开漏输出可以“线与”。

8、复用推挽输出GPIO_Mode_AF_PP

33ce4cae-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

其他复用比如 SPI 等可以选择复用推挽输出。

什么是推挽结构和推挽电路

推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。

推挽输出和开漏输出

33fe5214-4d2f-11ee-a25d-92fbcf53809c.jpg?imageView2/2/w/1000

左侧为推挽输出,可以输出高低电平。右侧为开漏输出,只能输出低电平,高电平靠外部上拉电阻决定。

图中所示为三极管,也可以叫开集输出(集电极开路输出),开漏输出是当这个管子为MOS管,漏极开路输出,叫开漏输出。

推挽输出:上面三级管导通,输出高电平,下面三极管导通,输出低电平。

开漏输出:三极管导通输出低电平,三极管截止是高阻态,电平由外部上拉电阻决定。

推挽输出高电平(向负载推流):

340fbc98-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000

推挽输出低电平(从负载拉流):

341a151c-4d2f-11ee-a25d-92fbcf53809c.png?imageView2/2/w/1000


关键字:STM32  单片机 引用地址:STM32单片机的八种GPIO口模式

上一篇:ESP32、GD32、STM32MCU的区别
下一篇:为什么有些STM32中断没有子优先级?

推荐阅读最新更新时间:2026-03-25 12:42

GPIO I/O——八种工作模式
通用模式:4种输入模式,2种输出模式(此时GPIO受CM3内核(即:cpu)控制) 复用模式:2种复用输出模式:推挽式复用功能输出模式、开漏复用功能输出模式(在复用模式下,GPIO受STM32片上外设(如:I^2C、UART、TIM、pwm、ADC等)所控制,(此时I/O口输出/输入的信息,都是由片上外设来发送/接收) 一共八种模式 4种输入模式: 1.浮空输入: 浮空输入,就是I/O口在输入模式时,红框中的上/下拉电阻都是断开连接的情况下,stm32外部输入的信号进行读取。注意:VDD为3.3v,VSS为0v。 拓展:这个上/下拉电阻的阻值范围在30k~50k之间。 经过的路径:
[单片机]
<font color='red'>GPIO</font> I/O<font color='red'>口</font>——八种工作<font color='red'>模式</font>
stm32f103 GPIO——一灯大师之I/O输出模式的寄存器配置
在讲述寄存器配置之前,我们先来看看二进制中,在不改变其他位的条件下,对某个位的置1和清零。 先看口诀: 清零用& (对某一位,进行 与 操作。与0相与,会清零。与1相与,不改变) 置1用 | (对某一位,进行 或 操作。与0相或,不改变。与1相或,会置1) 例如: 二进制:0001 1100,我想要在不改变其他位的情况下,将第四位清零。因为,清零用&,与0相与,会清零,与1相与,不改变。所以: 0001 1100 & ~(0x01 3) == 0001 0100 注意:0x01 3 == 0000 1000(这里由于要和8位的二进制数相与,所以这里会自动扩展成8位)(而且注意这里
[单片机]
stm32f103 <font color='red'>GPIO</font>——一灯大师之I/O<font color='red'>口</font>输出<font color='red'>模式</font>的寄存器配置
STM32单片机最小系统详解
STM32F103RCT6: STM32F103RCT6是一种嵌入式-微控制器的集成电路(IC),32位 Cortex-M3内核处理器,速度是72MHz,程序存储器容量是256KB,程序存储器类型是FLASH,RAM容量是48K,封装LQFP64。 STM32单片机命名规则: STM32单片机最小系统: 所谓单片机最小系统,就是让单片机能够正常运行,最少且必须的器件所组成的系统。 单片机最小系统上电之后,单片机可以正常复位,下载程序,除此之外没有其他任何功能。 在最小系统保证正确的基础上,可以依次添加其他功能模块或器件,使之单片机具有实际功能。 STM32单片机最小系统包括一个复位电路和一个时钟电路。如下图1所示。 图
[单片机]
STM32单片机PWM功能详解
PWM(Pulse Width Modulation)脉冲宽度调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。它是把每一脉冲宽度均相等的脉冲列作为PWM波形,通过改变脉冲列的周期可以调频,改变脉冲的宽度或占空比可以调压,采用适当控制方法即可使电压与频率协调变化。可以通过调整PWM的周期、PWM的占空比而达到控制电流。例如输出占空比为50%,频率为10Hz的脉冲,高电平为3.3V.则其输出的模拟效果相当于输出一个1.65V的高电平。脉冲调制有两个重要的参数,第一个就是输出频率,频率越高,则模拟的效果越好。第二个就是占空比。占空比就是改变输出模拟效果的电压大小。占空比越大则模拟出的电压越大。 PWM频率 是
[单片机]
<font color='red'>STM32</font><font color='red'>单片机</font>PWM功能详解
STM32与FPGA的SPI通信实现详解:从MCU到FPGA的互相通信实践(第3篇)
前几篇的原理与代码写得不够详细并且有疏漏得地方,在本篇中会进行纠正 首先,我们先认识到我们需要在FPGA中创建什么类型的模块,一个ROM供MCU读取,一个RAM供MCU写入,若干计数器。为了实现这些模块的通信,在这中间我们需要使用一些模块来达到目的。最为重要的模块就是充当MOSI与MISO的处理转化输入输出的模块,我们暂且简称其为SPI_BUS模块,这个模块的一个作用是处理MCU输入的32位数据,将其转化为地址和数据两部分数据发送给各个模块 由上图实例化的模块图可以看出,输出一个16位的数据和一个32位的使能标志,有关使能标志位如何寻址相应寄存器在上一章节讲过,不再赘述。而这边的I_DIN通过一个MUX选择器来选择MCU读
[单片机]
<font color='red'>STM32</font>与FPGA的SPI通信实现详解:从<font color='red'>MCU</font>到FPGA的互相通信实践(第3篇)
STM32单片机系列驱动红外循迹小车的实现与实践
前言: 这是使用stm32系列单片机使用hal库开发的一个红外循迹小车,用于理解stm32一些基础外设的使用如PGIO,定时器中断,pwm波生成等。使用的外设模块有“两块tb6612直流电机驱动模块”“两块tcrt5000红外循迹模块” tb6612直流电机驱动模块 tb6612直流电机驱动模块的功能 双驱动,也就是可以驱动两个电机。 STBY:接单片机的IO口,清零,电机全部停止。 置1,通过AIN1 AIN2,BIN1,BIN2来控制正反转 VM 接12V电源 VCC 接5V电源 GND 接地 PWMA 接单片机的PWM口 TB6612FNG每通道输出最高1A的连续驱动电流,启动峰值电流达2A/3A(连续脉冲/
[单片机]
<font color='red'>STM32</font><font color='red'>单片机</font>系列驱动红外循迹小车的实现与实践
STM32单片机开发入门[一]——开发软件安装与硬件准备
前言 本文将介绍STM32开发前常用的软硬件以及使用方式,帮助萌新在入门时找到一个学习的方向 一、软件部分 1.Keil MDK v5安装 Keil MDK v5是一个主流的嵌入式开发软件,包括了烧录调试等功能,但是代码补全方面功能稍弱,并没有vscode等编辑器或IDE那么智能,所以推荐将这个IDE作为一个单片机的烧录与调试软件使用,写代码时使用vscode打开项目文件夹,就可以愉快使用自动补全中的功能来敲代码了,下面介绍 Keil MDK v5的安装方式: 1.打开Keil官网的产品下载页面并点击MDK-arm: 2.填写个人信息并点击Submit(可以瞎写) 3.点击链接下载安装包 4.打开安装包,
[单片机]
<font color='red'>STM32</font><font color='red'>单片机</font>开发入门[一]——开发软件安装与硬件准备
STM32单片机使用注意事项
串口输入乱码 1.target 修改成 8.0 2.stm32Fxx.h 将 //#define HSE_VALUE ((uint32_t)25000000) /*! Value of the External oscillator in Hz */ 改成 #define HSE_VALUE ((uint32_t)8000000) /*! Value of the External oscillator in Hz */
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved