我有 使用 I2C_INT_STOP_Condition 和 2C_INT_NO_ACK 中断的 I2C 代码。
在中断处理程序中、当我获取 2C_INT_NO_ACK 时、我 会调用 I2C_sendStopCondition、以便接下来获取 I2C_INT_STOP_Condition 中断。
我这样做是为了在单点(停止条件)处理消息的每一端并启动新的传输。
现在、 NACKed 消息后下一次传输失败的时间大约有一半。
为了解决这个问题、我尝试 在中断处理程序中添加一个 while 循环、在它启动新的(有时失败)消息之前轮询 I2C_getStopConditionStatus。
这解决了问题、但是、对于其他 I2C 器件、有时这种 while 循环会卡住、因为 I2C_getStopConditionStatus 在某些情况下似乎总是返回 true。
什么会导致 I2C_getStopConditionStatus 从不返回 FALSE?

