EEPROM中的等待EEPROM内部时序完成;的函数 如下:
//等待EEPROM内部时序完成
void EEPROM_WaitForWriteEnd(void)
{
do
{
//产生起始信号
I2C_GenerateSTART(EEPROM_I2C,ENABLE); (1)
//不能加这句while( I2C_CheckEvent(EEPROM_I2C, I2C_EVENT_MASTER_MODE_SELECT) ==ERROR );
while(I2C_GetFlagStatus (EEPROM_I2C,I2C_FLAG_SB) == RESET);
//EV5事件被检测到,发送设备地址
I2C_Send7bitAddress(EEPROM_I2C,EEPROM_ADDR,I2C_Direction_Transmitter);
}
while(I2C_GetFlagStatus (EEPROM_I2C,I2C_FLAG_ADDR) == RESET );
//EEPROM内部时序完成传输完成
I2C_GenerateSTOP(EEPROM_I2C,ENABLE);
}
在(1)这语句后面为什么不能像写数据函数那样加入检测事件5 while( I2C_CheckEvent(EEPROM_I2C, I2C_EVENT_MASTER_MODE_SELECT) ==ERROR ); 的这个语句呢?
加了这个语句,程序就停了。不明白为什么 I2C_GenerateSTART()后不应该加事件5检测?
谢谢解答 |