Код
typedef struct sLoggerData
{
uint32_t timestamp;
uint32_t data;
uint16_t type;
uint16_t crc;
}sLoggerData;
sLoggerData loggerData;
{
uint32_t timestamp;
uint32_t data;
uint16_t type;
uint16_t crc;
}sLoggerData;
sLoggerData loggerData;
Ставлю точку останова в дебагере на строчке
Код
LOGGER_Read(0, &loggerData);
Вижу адрес структуры - 0x20000548
Перехожу в саму функцию - аргумент передается правильно.
Код
uint32_t LOGGER_Read(uint32_t log_to_read, sLoggerData * logData) //тут адрес 0x20000548
{
uint32_t log_addr = LOGGER_GetLogAddress(log_to_read);
I2C_ChooseDevice(EEPROM_CHIP);
I2C_ReadEeprom(log_addr, (uint8_t *)&logData, sizeof(sLoggerData)); //тут адрес 0x20009fd8
uint32_t crc = crc16 (0, (uint8_t *)&logData, (sizeof(sLoggerData)-2));
if (crc == logData->crc)
return 1;
else
return 0;
}
{
uint32_t log_addr = LOGGER_GetLogAddress(log_to_read);
I2C_ChooseDevice(EEPROM_CHIP);
I2C_ReadEeprom(log_addr, (uint8_t *)&logData, sizeof(sLoggerData)); //тут адрес 0x20009fd8
uint32_t crc = crc16 (0, (uint8_t *)&logData, (sizeof(sLoggerData)-2));
if (crc == logData->crc)
return 1;
else
return 0;
}
А когда доходит до (uint8_t *)&logData тут при кастинге адрес меняется на 0x20009fd8. Наверно поэтому данные не считываются?