STM32——GPIO输入模式下上拉和下拉的设置

时间:2024-03-30 08:12:29

转载自https://blog.csdn.net/lbsgrowup/article/details/47619471

GPIO处于输入模式下,下拉输入和上拉输入的相关配置如下图所示。需要注意的是,下拉输入和上拉输入是通过端口输出寄存器GPIOx_ODR来区分的。因此,在进行上拉/下拉输入配置时候,虽然对GPIO进行的关于输入的操作,但是仍要对和输出相关的寄存器ODR进行配置。

STM32——GPIO输入模式下上拉和下拉的设置

上述注意事项在实际代码编写时表现为:

(1)库函数
GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;  //PA0   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 下拉输入  
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);        //PA0 下拉 ODR=0<strong>
</strong>

STM32——GPIO输入模式下上拉和下拉的设置
特此说明,虽然GPIO_Mode中区分了上拉输入模式GPIO_Mode_IPU和下拉输入模式GPIO_Mode_IPD,如下图所示,但是在GPIO初始化配置时候仍然需要对ODR寄存器进行设置,如上述的GPIO_ResetBits(GPIOA,GPIO_Pin_0);操作。

STM32——GPIO输入模式下上拉和下拉的设置

(2)寄存器
GPIOA->CRL&=0XFFFFFFF0;    //PA0 清除之前设置  
GPIOA->CRL|=0X00000008;    //PA0 输入   
GPIOA->ODR|=0<<0;        //PA0 下拉<strong>
</strong>

STM32——GPIO输入模式下上拉和下拉的设置
此外,GPIO处于输入模式下,不需要对MODE1和MODE0进行设置(初始化之后默认为00)

STM32——GPIO输入模式下上拉和下拉的设置

输出模式位(仅在输出模式下配置,输入模式下不需要)
————————————————
版权声明:本文为CSDN博主「变速风声」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lbsgrowup/article/details/47619471