STM32F4中GPIO_PuPd寄存器设置上拉与下拉问题

时间:2024-04-10 21:03:20

首先 上下拉 是给IO一个默认的状态 比如控制EN的话,那么高有效的我们就下拉,低有效的话我们就上拉
而 很多IO 由于CMOS工艺问题会出现float的现象,所以不能悬空 需要PU PD。

上拉和下拉是指GPIO输出高电位(上拉)还是低电位(下拉)。
上拉就是输入高电平,然后接一个上拉电阻(起保护作用),知道上拉就表示该端口在默认情况下输入为高电平。

下拉就相反了,指输入低电平,然后接一个下拉电阻。

那么,什么是高电平,什么是低电平呢?这是电路方面的知识,百度百科讲的,表示不太懂。

上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。
下拉同理。也是将不确定的信号通过一个电阻钳位在低电平。
不过从程序设计的角度讲,
上拉就是如果没有输入信号则此时I/O状态为1,下拉相反。

具体配置为上拉还是下拉,要看电路图。看外部有没有上下拉电阻。

上拉寄存器是控制对应端口上拉使能的。当对应位为0时,设置对应引脚上拉使能,为1时,禁止对应引脚上拉使能。如果上拉寄存器使能,无论引脚功能寄存器如何设置(输入,输出,数据,中断等),对应引脚输出高电平。可见对应于S3C2410的GPB-BPH口内部有上拉电阻寄存器,当相应的上拉电阻使能时,对应的I/O引脚悬空时,表现出高电平。反之,表现出低电平。

STM32F4中GPIO_PuPd寄存器设置上拉与下拉问题


上拉是一个电阻接到一个电压,其实就是增强IO的驱动能力。下拉是一个电阻接到地,保证IO口是低电平。


主要是用在TTL电平和CMOS电平之间的相互驱动上面。TTL电平和CMOS电平的逻辑0和1的定义是不一样的,打个比方,你的IO输出逻辑1时电平是3.3V,而接到IO上的元件的逻辑1是5V,这时就要将这个IO接一个上拉,使该IO的逻辑1能够和其驱动的设备的逻辑1电平相当。具体上拉下拉电阻怎么计算,这要看IO输出的电流是多少,这个电流经过上下拉电阻时会产生一个压降,一般上拉电阻接到的电源电压减去这个压降就是该IO可以被拉到的电平值,要求这个上拉电平值能够达到逻辑1的下限。具体那篇文章可以在论坛里搜索一下。

1、一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。
2、数字电路有三种状态:高电平、低电平、和高阻状态,有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使处于稳定状态,具体视设计要求而定。
3、I/O端口,有的可以设置,有的不可以设置,有的是内置,有的是需要外接,I/O端口的输出类似与一个三极管的C,当C接通过一个电阻和电源连接在一起的时候,该电阻成为上C拉电阻,也就是说,如果该端口正常时为高电平,C通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻,使该端口平时为低电平,作用:比如,当一个接有上拉电阻的端口设为输入状态时,他的常态就为高电平,用于检测低电平的输入。 
4、上拉电阻有时是用来解决总线驱动能力不足时提供电流的,一般说法是拉电流;下拉电阻是用来吸收电流的,也就是灌电流。比如有I2C总线使用会上拉一个10k的电阻。

端口选择还应该注意端口的初始的状态。这个状态是系统复位时的状态,是不受上层软件控制的,假如选择的端口正常是高电平有效的,那么应该选一个系统复位时,是下拉状态的端口。