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

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

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

(1)库函数

  1. GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_0;  //PA0     
  2. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 下拉输入    
  3. GPIO_Init(GPIOA, &GPIO_InitStructure);  
  4. GPIO_ResetBits(GPIOA,GPIO_Pin_0);       //PA0 下拉 ODR=0<strong>  
  5. </strong>  
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>

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

(2)寄存器

  1. GPIOA->CRL&=0XFFFFFFF0;  //PA0 清除之前设置    
  2. GPIOA->CRL|=0X00000008;  //PA0 输入     
  3. GPIOA->ODR|=0<<0;      //PA0 下拉<strong>  
  4. </strong>  
GPIOA->CRL&=0XFFFFFFF0;	//PA0 清除之前设置  
GPIOA->CRL|=0X00000008;	//PA0 输入   
GPIOA->ODR|=0<<0;		//PA0 下拉<strong>
</strong>

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

输出模式位(仅在输出模式下配置,输入模式下不需要)

输出模式位(仅在输出模式下配置,输入模式下不需要)

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值