[应用相关] STM32 GPIO输入上拉下拉的寄存器设置方法

[复制链接]
1146|4
 楼主| dsdfdcdx 发表于 2019-3-28 15:16 | 显示全部楼层 |阅读模式
原贴链接:http://www.openedv.com/forum.php?mod=viewthread&tid=306


在Alientek的源码中的按键输入实验中有如下一段初始化代码:
void KEY_Init(void){
      RCC->APB2ENR|=1<<2;     //使能PORTA时钟
    GPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入      
    GPIOA->CRL|=0X00000008;  
    GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入      
    GPIOA->CRH|=0X80800000;                  
    GPIOA->ODR|=1<<13;       //PA13上拉,PA0默认下拉
    GPIOA->ODR|=1<<15;       //PA15上拉
}
经常有用户问道,为什么端口设置为输入,然后还要对输出寄存器进行写操作, GPIOA->ODR|=1<<15;       //PA15上拉
在中文数据手册里面的确没有看到说明,下面是英文手册里面的(从网上找的):

29d4d5c2b6210f297e1da242221b76d5_190.jpg
即在将端口设置为上拉/下拉输入的状况下,是由将GPIOx->ODR相应位设置为0或1来设置为下拉输入还是上拉输入的。
零三翟邢止胃 发表于 2019-3-29 09:16 | 显示全部楼层
好帖子啊!帮你顶住啊!
joketinnle 发表于 2019-3-29 17:17 | 显示全部楼层
这个应该跟MCU的GPIO结构有关。
huahuagg 发表于 2019-3-29 20:05 | 显示全部楼层
使用库操作很完美
戈卫东 发表于 2019-3-29 21:32 | 显示全部楼层
ST的10X系列出的很早,一些寄存器设置不是那么理想
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

80

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部