2015-08-13 9 views
0

я получаю предупреждение:EEPROM Stroe и инициализация делает указатель из целого числа без броска

Инициализация делает указатель из целого числа без броска

Это мой код:

case 4: 
{ 
    uint8_t* adr = 12; 
    writeEEPROM((uint8_t *) adr, &z, sizeof(z)); 
} 

writeEEPROM:

void writeEEPROM(uint8_t* eeAddress, uint8_t* buffAddress, uint32_t byteCount){.... 

Где моя проблема.

И, возможно, вопрос 2: возможно ли отправить адрес объединения в функцию writeEEPROM?

+0

Lokk здесь 'uint8_t * adr = 12;' –

+0

Если удалить указатель из этой строки. Я получаю предупреждение , переводящее указатель из целого числа разного размера .... на следующей строке writeEEPROM ... – drVrh

ответ

1

Проблема - это часть кода, которая делает указатель из целого без литого. Изменение на uint8_t* adr = (uint8_t*)12;

Возможно, если я отправил адрес объединения в функцию writeEEPROM?

Да, вы можете писать любые данные. Тем не менее, разметка структуры/объединения и выравнивание. Обычно EEPROM имеет разные требования к выравниванию, чем оперативные переменные.

+0

Спасибо за ответ, это правильно. Теперь я храню данные в союзе: 'code' union { \t struct { \t \t unsigned int AMPM: 24; \t} день; \t } tDay [14]; 'code' Теперь я хотел бы сохранить этот союз в EEPROM, когда установлен таймер. – drVrh