在IIC实验中,原子哥将PB7设置为了 通用上下拉输入或者通用推挽输出
原子哥的例程:
#define SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;} //将PB7设为通用上下拉输入
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;} //将PB7设为通用推挽输出
//IO操作函数
#define IIC_SCL PBout(6) //SCL
#define IIC_SDA PBout(7) //SDA
#define READ_SDA PBin(7) //输入SDA
但是《STM32中文参考手册》8.1.11中,端口的复用功能,要把GPIO作为IIC接口,要设置为开漏复用输出。这与原子哥的设置不相符合。
疑问:我能想到的原因是,这里任何的引脚都能做IIC接口,而STM32芯片的硬件底层IIC功能根本没有被调用,这里仅仅是使用IO口仿真了IIC的时序。不知正解如何?请大家指教。
对啦,就是这意思。设为复用,你就已经没操作权啦,没法改变IO状态。所以,用软件IIC,把IO设为复用状态,肯定会通讯失败的。
一周热门 更多>