中级会员
 
- 积分
- 388
- 金钱
- 388
- 注册时间
- 2020-11-7
- 在线时间
- 44 小时
|
发表于 2020-12-29 16:30:30
|
显示全部楼层
抱歉,没仔细看,和8楼一样重新梳理了一边。
1.下面是PA0的上拉输入寄存器的配置
GPIOA->CRL&=0XFFFFFFF0; //PA0 清除之前设置
GPIOA->CRL|=0X00000008; //PA0 输入
GPIOA->ODR|=0<<0; //PA0 下拉
查看端口配置表(在《stm32中文参考手册》中的GPIO那章有讲),可知在GPIOx_H和GPIOx_L两个寄存器中,CNFx[1:0]控制输入/输出的模式,MODEy[1:0]控制输入还是输出。但是在输入上/下拉的选择还需要在寄存器GPIOx_ODR相应位写1或0来确定。
2.我们再来看库函数版本的定义
首先我要说一句,看不懂库函数的时候,看看初始化函数。重点!!!
typedef enum 16进制转化2进制 列出bit4位 列出bit3-bit2位 输入/输出模式 列出bit6-bit5
{ GPIO_Mode_AIN = 0x0, 0000 0000 0 00 模拟出入模式 00
GPIO_Mode_IN_FLOATING = 0x04, 0000 0100 0 01 浮空输入模式 00
GPIO_Mode_IPD = 0x28, 0010 1000 0 10 上拉/下拉输入模式 01(此位用于判断设置下拉)
GPIO_Mode_IPU = 0x48, 0100 1000 0 10 上拉/下拉输入模式 10(此位用于判断设置上拉)
GPIO_Mode_Out_OD = 0x14, 0001 0100 1 01 开漏输出模式 00
GPIO_Mode_Out_PP = 0x10, 0001 0000 1 00 推挽输出模式 00
GPIO_Mode_AF_OD = 0x1C, 0001 1100 1 11 复用开漏输出模式 00
GPIO_Mode_AF_PP = 0x18 0001 1000 1 10 复用推挽输出模式 00
}GPIOMode_TypeDef;
这样就清晰懂了吧。还有不懂的就和8楼的解释看看。
|
|