GPIO学习

📅2026/7/14 13:25:01 👁️次浏览
GPIO学习
GPIO学习前言一、输出模式一、上拉电阻二、下拉电阻1、什么是下拉电阻2、核心工作原理浮空问题为什么必须用下拉3、典型应用场景4、和上拉电阻对比5、补充细节三、GPIO输出模式1.推挽模式2.开漏模式前言在初学STM32使用cubemx进行简单的配置时gpio的多个配置选项直接让我看花了眼晕头转向不知道该怎么进行配置一直都是胡乱瞎配置的最近看了一些文章和视频 加深了对于单片机的GPIO的理解所以写一篇笔记作为备忘。(●’◡’●)ps本文以STM32F103C8T6为例以下为cubemx中GPIO的配置以及中文释义(1)GPIO output level(引脚初始电平设置 )High输出初始化为高电平Low输出初始化为低电平(2)GPIO mode( GPIO 输出模式)Output Push pull推挽输出 强高低电平可以为IO设备供电Output Open Drain开漏输出模式 为强低电平只有低电平可以为IO设备供电但是高电平时只可以作为一个信号输出(3)GPIO Pull-up/Pull-dowm(上拉下拉电阻)No pull-up and no pull-down无上拉或下拉pull-up内部上拉电阻Pull-dowm内部下拉电阻(4)Maxinum output speed引脚速度设置Low低速Medium中速High高速Very High高速(5)User Label(用户标签)给引脚设置名称 如LED0一、输出模式首先了解一下GPIO内部的电路结构查看手册得知GPIO内部的电路结构如图所示:在输出时只用看“输出驱动器”部分可以得知输出模式下GPIO内部结构可以抽象为两个mos中间引出一条线作为GPIO输出。一、上拉电阻上拉电阻是的是电阻在电路中的作用是上拉上拉电阻①可以提高电路的驱动能能力②可以将一个不确定的信号钳位在高电位。①可以提高电路的驱动能能力在让引脚输出高电平时单片机的P-MOS导通N-MOS截止电流由单片机内部vdd流向P-MOS如果引脚没有外接电阻电平显示为vdd。如果给引脚外接一个150欧电阻数值随便设置的阻值较大电阻到地再对引脚电平进行测量会发现现在的引脚电平 电平A 是小于vdd的其原因是电源存在内阻、MOS存在阻抗导致引脚内部电路存在一定的阻抗、分走一部分电压。如果再在上面的基础上加一个100欧电阻接到vdd会发现现在的电平 B 高于之前的 电平 A因为vdd和引脚之间的外接电阻和引脚内部的内阻 同在vdd和引脚之间属于并联关系所以使得等效内阻减小、分压减小 -- 引脚电压上升 提高了电路的驱动能能力。②可以将一个不确定的信号钳位在高电位其原理和①相同核心都是 外接电阻和内阻为并联关系可以拉低等效内阻阻值使内阻分压减小。例如在引脚开漏输出状态下 P-MOS断开相当于接了一个无穷大的电阻如果想要引脚输出高电压那么N-MOS要处在截止状态也可以等效为一个无穷大电阻 在该电路的基础上添加一个上拉电阻由于开路电阻无限大所以上半部分等效阻值与上拉电阻阻值相接近再等效为串联模型下面电阻远远大于上面电阻所以引脚电平固定在高电平。二、下拉电阻1、什么是下拉电阻GPIO引脚内部集成一个电阻一端接引脚、一端接GND地这个电阻就是下拉电阻芯片寄存器开启下拉模式后电阻接入电路。2、核心工作原理(1)无外部输入时引脚仅通过内部电阻连地电流流入GND引脚稳定为低电平0不会浮空。(2)外部给高电平信号外部电压地电位外部电流压过下拉电阻引脚变为高电平1(3)外部短接GND引脚依旧低电平不受影响。浮空问题为什么必须用下拉如果不开启上下拉引脚悬空时无固定电位受电磁干扰、静电影响电平会随机高低程序读取IO值乱跳按键、传感器识别出错。下拉就是给引脚一个默认低电位基准。3、典型应用场景按键检测按键一端接VCC一端接GPIO开启下拉按键松开→IO低电平按键按下→IO接高电平程序检测高电平判断按键按下。NPN传感器、低触发外设设备无输出时引脚保持低设备输出高电平再触发中断/检测。防止闲置IO浮空干扰不用的GPIO统一配置下拉避免杂波干扰电路。4、和上拉电阻对比模式内部电阻连接默认电平常用按键接法下拉电阻引脚→GND低电平0按键接VCC到IO上拉电阻引脚→VCC高电平1按键接GND到IO5、补充细节阻值芯片内部上下拉电阻一般几十kΩ电流很小不会烧坏引脚。驱动能力内部下拉电阻驱动弱大功率负载不能只靠下拉必须外接硬件电阻。配置逻辑寄存器可单独设置每个引脚浮空/上拉/下拉/推挽输出。中断搭配下降沿触发适合上拉IO上升沿触发适合下拉IO。举个简单例子GPIO配置下拉按键一端3.3V一端接GPIO。松手时引脚被拉到地0按下后3.3V直接给到引脚1单片机就能读到按键按下。三、GPIO输出模式1.推挽模式直接输出高低电平电压。低电平时接地高电平时输出电源电压这种方式可以不加上拉电阻。2.开漏模式本身不输出电压要输出高电压必须加上拉电阻。