STM32-IO方向设置

读取MPU6050时,在IIC.h中看到了如下的代码,比较疑惑是什么意思。


#define MPU_SDA_IN()  {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=8<<4;}
#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFFFF0F;GPIOB->CRH|=3<<4;}

经查,CRH为STM32GPIO的端口配置寄存器,之于对应的还有CRL寄存器。

CRL和CRH的作用

CRL和CRH控制着每个IO口的模式以及输出速率。

CRH寄存器

 

通过中文参考手册可以了解到,CRH是控制GPIO的高8位

即GPIOB->CRH,表示要操作GPIOB的高8位,就是PB8 ~ PB15;

同理GPIOB->CRL,表示要操作GPIOB的低8位,就是PB0 ~ PB7。

 

由上述知"GPIOB->CRH&=0XFFFFFF0F"的意思就是,将PB9的设置清零,其余位保持不变。

GPIOB->CRH|=8<<4的意思:8<<4 表示为二进制位是1000 0000,结合上表,则整个的意思是将CNF9设为10,即将PB9设为上拉输入模式。

GPIOB->CRH|=3<<4的意思: 3<<4表示为二进制是0011 0000,表示将MODE9设为11,即将PB9设为输出模式,最大输出速度为50Mhz。

CRL则同理。

参考:

【浅析STM32之GPIO寄存器(CRL/CRH)配置 】_@slow-walker的博客-CSDN博客_gpiob->crl

STM32端口IO方向设置问题的_果果小师弟的博客-CSDN博客_gpioc->crh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值