реклама на сайте
подробности

 
 
> Передача структуры в функцию.
Jenya7
сообщение Apr 27 2016, 10:00
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть глобальная структура.
Код
typedef struct sLoggerData
{
    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;
}

А когда доходит до (uint8_t *)&logData тут при кастинге адрес меняется на 0x20009fd8. Наверно поэтому данные не считываются?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 02:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01347 секунд с 7
ELECTRONIX ©2004-2016