STM32 IIC问题

STM32 IIC问题

1、卡在while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));

(1)检测硬件总线空闲时是否都为高电平
(2)先GPIO时钟使能,再I2C时钟使能,然后才配置IIC(注意顺序!!

2、 卡在while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));

同1

3、卡在while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));

一般是由于从设备速度不够快造成的,将STM32主机IIC总线速度适当降一些即可。