初学者的学习笔记,有问题的地方请多指教,会持续修改更新,不断学习进步。
4.26日更新
目录
1、对GPIO的简单刨析
2、直接操作绝对的内存地址点灯(一)
3、操作寄存器映射点灯(二)
对GPIO的理解:
GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来。
1、保护二极管及上、下拉电阻
目的:防止引脚外部过高或过低的电压输入引入芯片导致芯片毁损。
当引脚电压高于VDD时,上方的二极管导通,当引脚电压低于VSS时,下方的二极管导通。如果io口连接电机,电机会产生反电动势,在极短时间内产生高压,二极管反应不过来,就有可能直接导致芯片烧坏。
2、P-MOS管和N_MOS管(推挽输出和开漏输出)
输出数据寄存器(ODR)写0或1时,通过输出控制,控制两个MOS管工作,通过外设的GPIO输出3.3V或0V
推挽输出
在ODR对该结构输入高电平时, 经过反向后,上方满足Ug<Us,PMOS导通,下方的NMOS关闭,对外输出3.3V
在该结构输入低电平时,经过反向后,下方满足Ug>Us导通,NMOS导通,上方的PMOS关闭,OUT被拉入地,对外输出0
当引脚高低电平切换时,两个管子轮流导通,P管负责灌电流,N管负责拉电流,使其负载能力和开关速度都比普通的方式有很大的提高。
推挽输出的低电平为0V,高电平为3.3V
开漏输出
特性:只输出低电平,无法直接输出高电平。
若控制输出为1时,PMOS管和NMOS管都关闭,引脚既不输出高电平,也不输出低电平,为高阻态,为正常使用,必须接上拉电阻。
总结:推挽输出模式一般应用在输出电平为0和3.3V而且需要高速切换开关状态的场合。在STM32的应用中,除了必须用开漏模式的场合,都习惯用推挽输出模式
开漏输出具有“线与”功能,一个为低,全部为低,多用于I2C和SMBUS总线,除此之外,还有电平不匹配的场合,如需要输出5V的高电平&