#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的SCL线SDA线分别是PB8、PB9;
这段代码我理解,就是操作GPIOB的MODER寄存器来修改SDA线的输入输出模式,但是修改之后MODER寄存器的值 输入是0011 1111 1111 1111 1111,输出是0111 1111 1111 1111 1111;
这样不会影响到SCL线的输入输出模式嘛?这样的话MODER寄存器上对应SCL位的值是11 SCL应该是模式应该是模拟而不是我们想要的输出模式。
为什么可以这样写? |