热泪盈眶
最近的考核任务是基于STM32的MPU6050
我移植的是正点的模板
1.第一个出现的问题
#define SDA_IN() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=0<<9*2;} //PB9输入模式
#define SDA_OUT() {GPIOB->MODER&=~(3<<(9*2));GPIOB->MODER|=1<<9*2;} //PB9输出模式
正点软件模拟IIC用的IO口是B8B9
我的板子是B6B7
而上面两句话不知道怎么改 在网上看了很多资料后初步了解
复制一下
3是二进制的11,~(3<<(92)是将11左移9*2=18位,也就是第18位和第19位为11,其他各位为0,。然后取反,即除了第18位和第19位为0,其他各位都为1。这里可能默认3是int型,占据4个字节32位。然后再与GPIOB组的moder寄存器取与,即将moder寄存器第18位和第19位置0,其他各位保持不变。由moder寄存器各位功能可知,就是讲PB9口设置为复位模式(即输入模式)。而GPIOB->MODER|=0<<92同样的过程,由于0<<92最后的结果是各位都是0,再与moder寄