STM32的GPIO

本文详细介绍了STM32中GPIO外设的工作原理,包括如何通过APB2总线访问寄存器、不同模式下的输入输出结构(如推挽、高阻、浮空等)、驱动电路的选择以及速度限制。重点强调了配置锁定寄存器和保护措施,如LED连接中的限流电阻。
摘要由CSDN通过智能技术生成

STM32中,所有GPIO外设挂载在APB2外设总线上

 

寄存器就是特殊的存储器,内核可以通过APB2总线对寄存器进行读写,来输出或读取电平

 

分输出,输入寄存器,数字1代表高电平,数字0代表低电平

 

STM32是32位单片机,寄存器为32位,所以是低16位有对应端口

 

寄存器存储数据,驱动器增加信号驱动能力

 

输入模式:

GPIO口内部自带上下拉给默认输入电平,数字端口,输入只有高电平和低电平,外部没有数字信号为默认输入电平

引脚浮空,输入电平极容易受外接干扰而改变,避免输入数据不确定

上下拉阻值大,为弱上拉和弱下拉,不影响正常输入

内置斯密特触发器:对输入电压整形,输入电压大于某一阈值,输出变为高,小于某阈值,输出变为低,外界数字信号,也可能会失真,避免信号波动造成输出抖动

触发器前面前面接一跟模拟输入电路连接ADC,ADC接收模拟量


触发器后面额外引出一根线,为复用功能输入,给其他读取端口的外设用,比如串口输入,接收数字量

 

GPIO输出结构:

输出数据寄存器只能整体读写,位设置/清除寄存器可以设置输出数据寄存器的一个位

直接读输出数据寄存器,用位运算更改某一位,再写回去,或者直接用位设置/清除寄存器

前者麻烦效率低,操作io不好,后者在位设置某一位置1,就会给输出数据寄存器对应位置1,不需要操作的位写0,内部电路会去操作,某一位清0就在位清除寄存器对应位写1

还可以读写 STM32中的“位带”区域,类似51的的位寻址,STM32分配了地址区域,映射了RAM和外设寄存器所有的位,读写这里,相当于映射的那位,不管这个方法,我们学库函数操作,就是用位设置/清除寄存器

MOS管  电子开关,由输出数据寄存器信号控制,输出1把电路接到VDD,输出0把电路接到VSS

输出模式有以下几种

推挽输出/强推输出模式:MOS管可以接到VDD或者VSS,为强上拉或者强下拉,STM32对io有绝对控制权,控制电平高低
开漏:只能接到VSS,输出1相当于断开,高阻模式,高阻态没有驱动能力
可以拿来作通信协议的驱动方式,如I2C,多机通信,可以避免各个设备之间的干扰,或者输出5V信号,外接上拉电阻到5V电源

关闭模式:就是输入模式,端口电平由外部控制

浮空输入必须接入连续的驱动源,不能出现悬空状态

 

 

配置成输入模式的时候,输出电路是断开的,但是输出模式的时候,输入电路电路不会断开

一个端口只能有一个输出,可以有多个输入,所以输出的时候,输入电路不用断开,也能顺便输入我输出的电平

 

复用输入,普通输入也有效,为顺便读取一下,除了模拟输入,其他模式输入模式都有效,可以读取到

外设gpio可以看手册里的表

寄存器也可查表

位清除/设置寄存器高16位位清除,低16位位设置

还有个专门清除寄存器,低16位,这样上面那个寄存器低16位设置,这个低16位清除,都用16位数据方便,同时设置清除就用上面那个,同步性,同步性要求不高,就先设置再清除

端口配置锁定寄存器:锁定端口配置,防止意外更改,

LED连接电路配电阻,防止烧毁,配亮度

很多单片机高电平弱驱动,低电平强驱动,是结合了许多具体外设的特性,比如高电平驱动的外设多不需要强驱动能力,低电平驱动的外设则相反

三极管开关是最简单的驱动电路,功率微大的外设,用io口驱动导致负担过重
单侧基极,箭头发射极,剩下集电极,pnp,箭头入,低电平三极管导通
npn相反,三极管的连接,发射极要靠近电源,发射极和基极之间需要开启电压才能通断

端口配置低/高寄存器,四个位定一个模式,16个口要64位,所以是有两个配置寄存器

GPIO输出速度:限制输出引脚最大翻转速度,为了低功耗和稳定,功耗要求不高就最高速

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值