我在用TM4C129DNCZAD 的 I2C模块,也可以正常通讯,但是奇怪的是我 用了一个 电路中不存在的 slave 地址, ROM_I2CMasterBusy 不阻塞, ROM_I2CMasterErr返回是0,ROM_I2CMasterDataGet 返回的是上次正常通讯返回的值。
各位大佬这种情况的原因有可能是什么?如下代码怎么都不返回 false
bool WaitForI2CorTimeout(uint32_t I2Cbase)
{
ROM_TimerIntClear(TIMER4_BASE, TIMER_TIMA_TIMEOUT);
ROM_TimerLoadSet(TIMER4_BASE, TIMER_A, 120 * 10000); // 10ms
ROM_TimerEnable(TIMER4_BASE, TIMER_A);
while (true)
{
if (!ROM_I2CMasterBusy(I2Cbase)) break;
if (ROM_TimerIntStatus(TIMER4_BASE, false)==TIMER_TIMA_TIMEOUT) return false;
}
ROM_TimerDisable(TIMER4_BASE, TIMER_A);
if (ROM_I2CMasterErr(I2Cbase) != I2C_MASTER_ERR_NONE) {
return false;
}
return true;
}