高中生
最后登录1970-1-1
在线时间 小时
注册时间2017-2-16
|
我在用F429挑战者这个型号做I2C通讯实验的时候,利用模拟器模拟程序,停在了写入函数中
void EEPROM_Byte_Write(uint8_t* pData,uint8_t addr)
{
I2C_GenerateSTART(EEPROM_I2C,ENABLE);
while(I2C_CheckEvent(EEPROM_I2C,I2C_EVENT_MASTER_MODE_SELECT) != SUCCESS )
{
//....
}
I2C_Send7bitAddress(EEPROM_I2C,EEPROM_ADDR,I2C_Direction_Transmitter);
while(I2C_CheckEvent(EEPROM_I2C,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) != SUCCESS )
{
}
I2C_SendData(EEPROM_I2C,addr);
while(I2C_CheckEvent(EEPROM_I2C,I2C_EVENT_MASTER_BYTE_TRANSMITTED) != SUCCESS )
{
}
I2C_SendData(EEPROM_I2C,*pData);
while(I2C_CheckEvent(EEPROM_I2C,I2C_EVENT_MASTER_BYTE_TRANSMITTED) != SUCCESS )
{
}
I2C_GenerateSTOP(EEPROM_I2C,ENABLE);
}
停在了
I2C_Send7bitAddress(EEPROM_I2C,EEPROM_ADDR,I2C_Direction_Transmitter);
while(I2C_CheckEvent(EEPROM_I2C,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED) != SUCCESS )
{
}
这里的while语句中,进入函数,
卡在了这句话 flag2 = flag2 << 16;
然后我看了寄存器状态,I2C1的状态寄存器中ADDR也没有置一
这是不是就是STM32的一个固有BUG,没有解决的 |
|