各位前辈大家好:
IIC通讯实验里面的例程:
#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输出模式
第一句 GPIOB->MODER&=~(3<<(9*2)) 该如何理解?PB9的MODER寄存器低位右移3位取反相与,即是保留原来的值(貌似也把PB10的MODER寄存器也连带设置了下?为啥要这样呢),后面的PB9输出模式相或配置成输出能理解,但是PB9输入模式也相或,假如原来是01输出,相或之后岂不还是01输出模式,PB9输入模式是否应该为 GPIOB->MODER&=0<<9*2; ,望前辈指教,多谢。如果幼稚之处,还请谅解。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
注意用myiic.c的话,STOP那里时序有个版本有问题,可以检查下。SCL和SDA之间有延时才行,我就是遇到这个问题
回答非常正确
一周热门 更多>