网站建设市场调研,男女做暧视频网站免费,免费crm管理系统软件,wordpress用户注册后台名词解释
高低电平#xff1a;GPIO引脚电平范围#xff1a;0V~3.3V#xff08;部分引脚可容忍5V#xff09;数据0就是0V#xff0c;代表低电平#xff1b;数据1就是3.3V#xff0c;代表高电平#xff1b;
STM32是32位的单片机#xff0c;所以内部寄存器也都是32位的…名词解释
高低电平GPIO引脚电平范围0V~3.3V部分引脚可容忍5V数据0就是0V代表低电平数据1就是3.3V代表高电平
STM32是32位的单片机所以内部寄存器也都是32位的这里联想到32位机器操作64位数据比如int64/double数据需要2个寄存器保存一个数据计算效率很低
简介
GPIO在输出模式下可控制端口输出高低电平用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
GPIO在输入模式下可读取端口的高低电平或电压用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等最常见的读取按键
基本结构
STM32中所有的GPIO都是挂载在APB2总线上的命名规则以GPIOA、GPIOB等每个GPIO外设有16个引脚编号0~15一般称为PA0~PA15或PB0~PB15 这里GPIOA中有一个寄存器对应的只有16个引脚所以这个寄存器只有低16位对应的有端口高16位是没有用到的
驱动器是用来增加信号的驱动能力的寄存器只负责存储数据比如说要实现点灯能力的时候还是需要驱动器增大驱动能力的
位结构电路图
输入模块
左边三个寄存器中间是驱动器右边是某一个I/O的引脚整体可以分为两个部分上面是输入部分下面是输出部分
保护二极管是对输入电压进行限幅的VDD-3.3V、VSS-0V如果I/O引脚的输入电压大于3.3V那么上方的保护二极管就会导通输入电压产生的电流会直接流入VDD不会流入内部电路如果输入电压小于0V下方的二极管就会导通电流会从VSS流向I/O引脚防止内部电流汲取电流保护电路
上拉电阻和下拉电阻开关这个是可以通过程序配置的上面导通、下面断开就是上拉输入上面断开、下面导通就是下拉输入模式两个都断开就是浮空输入模式
上拉和下拉是为了给输入提供一个默认的电平如果输入引脚什么都不接那么就不知道这个时候是算高电平还是低电平就处于了浮空状态受到一点扰动就会变化上拉输入默认高电平的输入方式下拉输入默认低电平的输入方式
施密特触发器对输入电压进行转换当输入的电压大于某个阈值时输出会瞬间升为高电平当输入电压小于某个阈值时输出会瞬间降为低电平只有在输入高于上限或者低于下限的时候输出电平才会变化输入信号可能会失真波形不稳定经过施密特触发器整型的波形就可以直接写入输入数据寄存器了用程序读取寄存器某一个位的数据就知道对应端口的输入电平了 输出模块
通过程序对输出数据寄存器写入数据就能操控对应断开的高低电平
有三种方式一种是读取输出寄存器里的数据通过位运算的方式改变某一位的值改变对应端口的高低电平这效率比较低对于IO操作不太合适第二种方式就是使用位设置/清楚寄存器在位设置寄存器的某一位写1其他位写0内部电路就会自动将输出寄存器中对应位置1其他写0的位保持原数据不变如果想清0某一位就对改位写0其他位写1第三种方式。。。 推挽输出模式下输出控制根据输出寄存器中的数据控制P-MOS/N-MOS的断开输出高电平或者低电平这种模式下输出由STM32强控制
开漏输出模式下P-MOS完全断开只有N-MOS能控制数据位为1时N-MOS断开输出为高阻模式是高电平数据位为0是N-MOS接通接入VSS低电平输出为低电平这种模式下只有低电平有驱动能力高电平是没有驱动能力的I2C用的就是开漏输出模式多机通信的情况下可以避免各个设备之间的干扰
关闭输出模式下只有输入没有输出
GPIO模式
通过程序配置可以设置GPIO为以下8种模式配置上面的一些硬件电路 浮空/上拉/下拉输入
输入模式下输出驱动器是断开的端口只能输入不能输出 模拟输入
模拟输入时GPIO是无效的引脚直接接入内部ADC输出是断开的输入的施密特触发器是关闭状态从引脚直接接入ADC 开漏/推挽输出
输出都是用输出寄存器中的数据控制的输出模式下输入模块是有效的一个端口可以有多个输入但是只能有一个输出
开漏下高电平时是高阻态没有电流也没有驱动能力 复用开漏/推挽输出
控制输出模块直接接入片上外设和内部数据寄存器是断开的由片上外设控制