STM32——GPIO

一、GPIO简介:

1.引脚电平:

1. 0v ~ 3.3v,部分引脚可容忍5v,就是外部输入5v的电压也可以认为是高电平,但是对外输出只能输出3.3v的电平,下图中I/O电平内容为FT的引脚就是能够容忍5v电平的引脚。
在这里插入图片描述

2.输出模式下可以控制端口输出高低电平用以驱动LED、蜂鸣器、模拟通信协议(onewire等等)的输出时许部分,对于对电压要求更高的外设,也可以通过驱动电路间接控制。
3.输入模式下,可以读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入ADC电压采集、模拟通信协议接收数据等。

二、GPIO基本结构:

在这里插入图片描述

1. 左边的APB2为外设总线,所有的GPIO都是挂载在APB2总线上,也就是连的是APB2通过该总线和CPU进行交互。
2.所有的GPIO是以GPIOA、B、C的方式命名的,每个GPIO有16个引脚,分别从P_0~ P_15。
3.内核通过总线对每个GPIO内部的寄存器进行读写,完成输出电平和读取电平的功能,STM32内部的寄存器都是32位的,GPIO里的寄存器只用了低16位,
4.里面的驱动器是用来增强信号的驱动能力的,寄存器只负责存储数据,就算是点灯的操作,也需要驱动器负责增大驱动能力。

GPIO输入结构

在这里插入图片描述

序号1:
红圈部分为保护电路,用来保证输入电压在允许范围内,根据二极管的特性设计。

序号2:
序号2——红圈部分是两个可由程序控制的上拉电阻、和下拉电阻部分,该部分属于输入电路,接VCC(正极)的是上拉电路,接VSS(接地)的是下拉电路,当上拉电路中的开关闭合时输入默认为高电平,反之亦然,两个开关都断开则输入浮空输入模式,这时候输入电平非常容易被外界影响,导致可能出现一下高电平一下低电平的情况,因此上拉、下拉电路的作用是保证引脚浮空时输入电平数据为稳定可知的电平数据。两个电阻的阻止都比较大,目的是不影响正常的电平输入数据。

序号3:
红圈部分应该叫斯密特触发器,作用是对输入电压进行整形,当输入电压高于某个值就直接输出高电平,低于某个值就直接输出低电平 ,注意只有输入电压高于上限和低于下限时输出电压才会发生变化,如下图
在这里插入图片描述
之后该输出电平数据就会输入输入数据寄存器,由此可知,此型号的单片机的GPIO中存在两个寄存器。

序号3:
4.序号4模拟输入和复用功能输入 :
1.模拟输入——是连接到ADC上的,因为ADC需要接受模拟量,所以它接在斯密特触发器前面。因为模拟量就同上面举例的信号一样,是时刻变化的连续数据,需要被整形。

2.复用功能输入——是连接到其他需要读取端口的外设上的,例如串口的输入引脚,这跟线接收的是数字量,所以接在斯密特触发器后面,数字量是已经由其他信号数据转换成数字信号的数据,已经是01010了,所以不需要整形。

在这里插入图片描述

GPIO输出结构:

红圈:
1.输出数据寄存器:如果采用输出数据寄存器进行输出就和普通的io口输出一样,通过写该寄存器的某一位就能操作对应的某个端口了,注意该寄存器只能进行整体读写。
2.位设置/清除寄存器:可以用来单独操作输出数据寄存器的某一位而不影响其他位,
对输出数据寄存器进行单位操作的方法:
方法一:
通过使用按位与和按位或的操作对原本的数据进行位运算,再将结果写入输出数据寄存器。
方法二:
通过设置位设置寄存器,如果要对输出数据的某一位进行置1操作。只需要再位设置寄存器的对应位置写1就可以了,其他位写0,如果要对输出数据的某一位进行清0的操作就在位清除寄存器的对应位置位写1即可。
方法三:
读写STM32的位带区域,位带的作用和51单片机的位寻址作用差不多,在STM32中专门由一段地址区域,这段地址区域映射了RAM和外设寄存器的所有位,相当于有他们的一个复制体,对复制体做的事情会同时发生在主体上。

蓝圈:
3.P-MOS / N-MOS:MOS管是一种电子开关,用信号开控制开关的导通和关闭,开关复制将io口接到VDD或者VSS,这里可以选择三种输出方式。

4.推挽输出:该模式下,P-MOS和N-MOS均有效,数据寄存器为1时,上管导通下管断开,输出直接接到VDD,就是输出高电平。反过来则输出低电平。该模式下高低电平都有较强的驱动能力,就是说给1就是1,一般不出现因为驱动能力不足导致电平未成功改变的情况。该模式也叫强推输出模式,该模式下STM32对io口有绝对的控制权,输出什么电平由STM32说了算。
开楼模式;:该模式下P-MOS无效,只有N-MOS在工作,数据寄存器为1时下管断开,这时输出相当于断开,也就i是高阻值模式,为0时下管导通,输出直接接到VSS也就是输出低电平,这种模式下只有低电平有驱动能力,(I2C的通信协议采用的就是开漏输出模式),这个模式可以避免哥哥设备的相互干扰。如果想要在开漏模式下输出5v的输出信号,可以在io口处加一个5v的上拉电阻,当输出低电平时由内部N-MOS直接接VSS,需要输出高电平时就由外部上拉电阻将电平拉高至5v。

5.关闭模式:
当引脚为输入模式的时候,两个MOS都无效,端口的电平由外部信号来控制。

GPIO工作模式:

通过配置GPIO的端口配置寄存器,位结构的电路就会根据我们的配置进行改变,比如输入电路的开关的通断,输出电路的P-MOS和M-MOS是否有效、数据选择器的选择等等
在这里插入图片描述
注意:
1.浮空输入模式下端口要接上一个连续的驱动源,不能出现悬空的状态。
2.输入模式下输出都是无效的,但是在输出模式下输入是有效的。这是因为一个端口可以有多个输入,但只能有一个输出。

浮空/上拉/下拉输入电路:

在这里插入图片描述
根据对画圈中的开关进行控制,可以分别设置三种输入模式。

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手打猪大屁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值