但是在SDA发送和接收数据时,方向不一样,那么它该怎么转换呢?
初始化定义时:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;开漏输出
当接收数据时:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING ...
这样写也可以,但会把其他IO的状态也一起改了,而且慢。直接改寄存器吧。
GPIOx->CRH或GPIOx->CRL直接把SDA对应的那个管脚的部分改了就行。
4就是浮空输入,6就是通用开漏输出.