序言
在调试STM32 IIC的时候,遇到了一些问题,在这里记录:
问题一:写入时卡死在EV5事件,无法等来标志位
EEPROM进入了一种状态,无法回复起始位的请求,就算重新烧入正确的程序也无法解除这种状态,必须通过断电重启的方法才能重置EEPROM
正确方法是先烧录进正确的程序,然后拔掉所有电源,让EEPROM断电一次,最后再次开机,自动运行正常程序,这样就可以了,否则会发生一些灵异BUG,比如两次烧录一样的程序,结果不一样,等等,这是由于外设没有复位导致的。
这种状态的产生多半是因为在程序中,EEPROM还没有写入完毕就进行了读取
问题2:读取时卡在EV6事件-无法等来标志位
这种情况的产生很有可能还是在EEPROM正在写入的时候,提前开始了读取
I2C_EE_ByteWrite(&data,0x00);
//delay_ms(15);
EEPROM_RD_Byte(0x00, &data_read, 1);
如图没有添加延迟或者正确的逻辑判断就会导致在第一次运行Debug的时候,卡在EV6
然后再次运行正确的代码,在写入的时候就会卡在EV5,出现问题1