stm32入门 2

📅 2026/7/14 7:58:40 👁️ 阅读次数 📝 编程学习
stm32入门 2

GPIO简介

(1)GPIO(General Purpose lnput Output)通用输入输出口;

(2)可配置8种输入输出模式;

(3)引脚电平:0V~3.3V,部分引脚可容忍5V(有FT的)(但只能输出3.3V);

(4)输出模式下可控制端口输出高低电平,以驱动LED,控制蜂鸣器,模拟通信协议时序等;

(5)输入模式下可读取端口的高低电平或电压,用于读取按键输入,外接模块电平信号输入,ADC 电压采集,模拟通信协议接收数据等;

GPIO基本结构

图1

图2

由图2可看出在stm32中所有的GPIO都是挂载在APB2外设总线上的;

每个GPIO模块内主要包含了寄存器和驱动器

寄存器

输出寄存器写1,对应的引脚就会输出高电平,写0,就会输出低电平;

输入寄存器读取为1,就证明对应端口目前是高电平,读取为0,就是低电平;

驱动器

驱动器是用来增加信号的驱动能力的,寄存器只负责存储数据(例如:点灯操作就需要驱动器负责增大驱动能力);

GPIO位结构

图3

输入部分

保护二极管

电压小于0V时VSS接通,电压大于3.3V时VDD接通,电压属于0~3.3V时两个保护二极管均不接通;

上拉电阻下拉电阻

给输入提供一个默认的输入电平,由于输入只能是高电平或低电平,若输入引脚什么都不接,输入就会处于一种浮空的状态,此时引脚的输入电平极易受到外界的干扰而改变,为了保证输入数据确定,就需要加上上拉电阻或下拉电阻(如果接入上拉电阻,当电阻悬空时,还有上拉电阻来保证引脚的高电平(又被称为默认为高电平的输入模式)(下拉同理));

肖特基触发器(施密特触发器)

图4

作用:对输入电压进行整形;

原理:如果输入电压大于某一阈值输出就会瞬间升为高电平,小于某一阈值就会瞬间降为低电平,在阈值内保持高电平或低电平(即只有高于上限或低于下限输出才会改变可参考图4);

连接至片上外设

模拟输入

连接到ADC,ADC接收模拟量,因此连接到施密特触发器之前;

复用功能输入

连接到其它需要读取端口的外设上,其接收的是数字量,因此在施密特触发器之后;

输出部分

位设置/清除寄存器

由于输出数据寄存器同时控制16个端口,并且这个寄存器只能整体读写,为了对某些口进行单独操作就需要用到位设置寄存器(可对某一位进行置1的操作,其余不需要操作的位置0)或位清除寄存器(想要置为0的写入1);

推挽输出(强推输出模式)

P-MOS和N-MOS均有效;

该模式stm32对IO口具有·绝对的控制权;

当数据寄存器为1时,P-MOS(上管)导通,N-MOS(下管)断开,输出直接接到VDD,也就是输出高电平;

当数据寄存器为0时,N-MOS(下管)导通,P-MOS(上管)断开,输出直接接到VSS,也就是输出低电平;

开漏输出

P-MOS无效,只有N-MOS工作;

当数据寄存器为1时,N-MOS(下管)断开,这时相当于断开,也就是高阻模式;

当数据寄存器为0时,N-MOS(下管)导通,输出直接接到VSS,也就是输出低电平;

开漏模式可作为通信协议的驱动方式,在多机通信的情况下这个模式可以避免各个设备的相互干扰,开漏模式还可用于输出5V的电平信号(输出低电平时N-MOS接VSS,输出高电平时,由外部的上拉电阻拉高至5V);

输出关闭

即为输入模式;

GPIO的八种模式

浮空/上拉/下拉输入

模拟输入

只有模拟输入会关闭数字的输入功能;

推挽/开漏输出

复用推挽/复用开漏输出

即使用片上外设来控制;