Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: структура в еепром?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Faradey
если можно, то как определить структуру в еепром?
ARIM
Цитата(Faradey @ Nov 20 2006, 13:40) *
если можно, то как определить структуру в еепром?

struct MyStruct
{
int alpha;
int __flash * beta; /* Pointer to variables in flash memory */
};
__eeprom struct MyStruct gamma;
otrog
Для IAR-а:
Код
struct TConstConstructive
{
  double d;
  double D_;
  double y;

  unsigned int CRC16;
};

__eeprom struct TConstConstructive ConstConstructiveEEP = {12.0, 25.0, 2.26e-5, 0x545C};


Для CV никак.
Faradey
а так почему не работает?

Код
struct REG
{
   u08   Lo_byte;
   u08  Hi_bite;
};
struct HOLD_REG
{
struct REG SS_ADR;
struct REG SS_BAUD;
struct REG SS_PARITY;
struct REG SS_RESERV;
};

__eeprom struct HOLD_REG hold_reg;
hold_reg.SS_ADR.Lo_byte = 1;


ругается:
Цитата
Error[Pe077]: this declaration has no storage class or type specifier
Error[Pe147]: declaration is incompatible with "HOLD_REG __eeprom hold_reg"
Error[Pe065]: expected a ";"
otrog
Цитата(Faradey @ Nov 20 2006, 14:11) *
__eeprom struct HOLD_REG hold_reg;

Помоему компилятору без разницы в каком регистре записаны идентификаторы. Поэтому получилось одинаковое название у типа структуры и у структуры.

Пишите
Код
struct THOLD_REG
{
struct REG SS_ADR;
struct REG SS_BAUD;
struct REG SS_PARITY;
struct REG SS_RESERV;
};

__eeprom struct THOLD_REG hold_reg;
Faradey
Цитата(otrog @ Nov 20 2006, 14:05) *
Цитата(Faradey @ Nov 20 2006, 14:11) *

__eeprom struct HOLD_REG hold_reg;

Помоему компилятору без разницы в каком регистре записаны идентификаторы. Поэтому получилось одинаковое название у типа структуры и у структуры.

Пишите
Код
struct THOLD_REG
{
struct REG SS_ADR;
struct REG SS_BAUD;
struct REG SS_PARITY;
struct REG SS_RESERV;
};

__eeprom struct THOLD_REG hold_reg;




это не так...
причина в другом...
otrog
Цитата(Faradey @ Nov 20 2006, 15:49) *
это не так...
причина в другом...

А вы попробовали мой пример? Компилятор также ругается?
Faradey
Цитата(otrog @ Nov 20 2006, 14:57) *
Цитата(Faradey @ Nov 20 2006, 15:49) *

это не так...
причина в другом...

А вы попробовали мой пример? Компилятор также ругается?


клеветать и лгать не в моих традициях
ARIM
Цитата(Faradey @ Nov 20 2006, 14:11) *
а так почему не работает?

Код
struct REG
{
   u08   Lo_byte;
   u08  Hi_bite;
};
struct HOLD_REG
{
struct REG SS_ADR;
struct REG SS_BAUD;
struct REG SS_PARITY;
struct REG SS_RESERV;
};

__eeprom struct HOLD_REG hold_reg;
hold_reg.SS_ADR.Lo_byte = 1;


ругается:
Цитата

Error[Pe077]: this declaration has no storage class or type specifier
Error[Pe147]: declaration is incompatible with "HOLD_REG __eeprom hold_reg"
Error[Pe065]: expected a ";"


потому что надо чтобы все объекты в структуре были размещены в одном и том же типе памяти . в еепром, флэш, рам.
otrog
Цитата(Faradey @ Nov 20 2006, 15:58) *
клеветать и лгать не в моих традициях

Тогда строчку
Код
hold_reg.SS_ADR.Lo_byte = 1;

перенесите в main, или еще в какую процедуру.
IgorKossak
Цитата(otrog @ Nov 20 2006, 15:15) *
... строчку
Код
hold_reg.SS_ADR.Lo_byte = 1;

перенесите в main, или еще в какую процедуру.

т. к. инициализация переменной должна быть в строке, в которой эта переменная обьявляется.
В примере Faradey происходит присвоение переменной значения. А это должно осуществляться только внутри функции.
И дело здесь вовсе не в eeprom, а в нарушении правил программирования на С.
Faradey
Цитата(IgorKossak @ Nov 20 2006, 16:17) *
Цитата(otrog @ Nov 20 2006, 15:15) *

... строчку
Код
hold_reg.SS_ADR.Lo_byte = 1;

перенесите в main, или еще в какую процедуру.

т. к. инициализация переменной должна быть в строке, в которой эта переменная обьявляется.
В примере Faradey происходит присвоение переменной значения. А это должно осуществляться только внутри функции.
И дело здесь вовсе не в eeprom, а в нарушении правил программирования на С.


спасибо IgorKossak .
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.