我正在尝试创建通过 I2C 总线与外部 at24c32n eeprom 存储器一起工作的代码。我在我也创建的 i2c 库中创建了这个函数:
uint8_t eeprom_write_data(uint8_t *inputString[16])
{
uint16_t eeAddr = 0;
uint8_t err = 0;
eeAddr = next_unused_addr(); //reads 0xFFF eeprom address to get nr of inputs in eeprom
if(eeAddr == TWI_ERROR_START || eeAddr == TWI_ERROR_RSTART)
{
return eeAddr;
}
err = EEPROM_write_handler(eeAddr, inputString, sizeof(inputString)/sizeof(inputString[0])); //writes to eeprom
if(err == TWI_OK)
{
err = increment_eeprom_counter(eeAddr); //increments the number of inputs in eeprom on 0xFFF address
}
return err;
}
问题真的出在“increment_eeprom_counter”。具体来说,我可以把我想要的任何功能放在那里(甚至已经像 EEPROM_write_handler 这样使用和测试过)并且 I2C 将在发送开始条件时超时。奇怪的是,当我调试代码并跨过它时,它按预期运行。但是我必须“介入”图书馆的功能才能这样做。如果我跨过 main 它会再次超时。我在这里完全不知所措。有比我更了解的人吗?谢谢