Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Копирование структуры из EEPROM в RAM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
viktor_kun
Не получается скопировать переменную структурного типа, расположенную в EEPROM, в переменную такого же типа расположенную в RAM


#define CLOCKS struct\
{\
unsigned char second;\
unsigned char minute;\
unsigned char hour;\
unsigned char date;\
unsigned char weekday;\
unsigned char month;\
unsigned char year;\
}

__eeprom CLOCKS clockBuff = {48,55,10,3,5,11,6}; // инициализирую структуру расположенную в
// в EEPROM
CLOCKS clock; // переменная в RAM
clock = clockBuff; // Не копируется - ошибка

Выдаются следующие ошибки:

Error[Pe077]: this declaration has no storage class or type specifier
Error[Pe147]: declaration is incompatible with "struct <unnamed> __near clock" (declared at line 12)
Error[Pe028]: expression must have a constant value

Самое непонятное, что значит struct <unnamed>.?

Может B IAR'e есть какие-то стандартные функции как eeprom_read_block(); в GCC например?
otrog
Ошибка в том, что Вы делаете присвоение вне функции:
Код
clock = clockBuff; // Не копируется - ошибка

Переместите присвоение внутрь какой нибудь функции.
viktor_kun
пробовал, выдает следующую ошибку

Error[Pe513]: a value of type "struct <unnamed>" cannot be assigned to an entity of type "struct <unnamed> __eeprom *"


так же проблемы с указателями

CLOCKS __eeprom * clock_ptr_eep // указатель на структуру CLOCK находящуюся в EEPROM, сам указатель находися в RAM не выдает ошибок


main()
{
clock_ptr_eep = &clockBuff; // ткже выдает ошибки

..........

}

Error[Pe513]: a value of type "struct <unnamed> __eeprom *" cannot be assigned to an entity of type "struct <unnamed> __eeprom *"
IgorKossak
Попробуйте определить структуру через typedef, а не через #define.
У меня таким образом всё работает.

Например так:
typedef struct clocks
{
unsigned char second;
unsigned char minute;
unsigned char hour;
unsigned char date;
unsigned char weekday;
unsigned char month;
unsigned char year;
} CLOCKS;
viktor_kun
Спасибо большое теперь все работает, в том числе и указатели.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.