公司动态

stm32入门 2

📅 2026/7/14 7:38:27
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连接至片上外设模拟输入连接到ADCADC接收模拟量因此连接到施密特触发器之前复用功能输入连接到其它需要读取端口的外设上其接收的是数字量因此在施密特触发器之后输出部分位设置/清除寄存器由于输出数据寄存器同时控制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的八种模式浮空/上拉/下拉输入模拟输入只有模拟输入会关闭数字的输入功能推挽/开漏输出复用推挽/复用开漏输出即使用片上外设来控制