Перейти к содержанию
    

структура в еепром?

если можно, то как определить структуру в еепром?

struct MyStruct

{

int alpha;

int __flash * beta; /* Pointer to variables in flash memory */

};

__eeprom struct MyStruct gamma;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для 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 никак.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а так почему не работает?

 

 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 ";"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

__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;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

__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;

 

 

это не так...

причина в другом...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это не так...

причина в другом...

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это не так...

причина в другом...

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

 

клеветать и лгать не в моих традициях

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а так почему не работает?

 

 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 ";"

потому что надо чтобы все объекты в структуре были размещены в одном и том же типе памяти . в еепром, флэш, рам.

Изменено пользователем ARIM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

клеветать и лгать не в моих традициях

Тогда строчку

hold_reg.SS_ADR.Lo_byte = 1;

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... строчку

hold_reg.SS_ADR.Lo_byte = 1;

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

т. к. инициализация переменной должна быть в строке, в которой эта переменная обьявляется.

В примере Faradey происходит присвоение переменной значения. А это должно осуществляться только внутри функции.

И дело здесь вовсе не в eeprom, а в нарушении правил программирования на С.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... строчку

hold_reg.SS_ADR.Lo_byte = 1;

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

т. к. инициализация переменной должна быть в строке, в которой эта переменная обьявляется.

В примере Faradey происходит присвоение переменной значения. А это должно осуществляться только внутри функции.

И дело здесь вовсе не в eeprom, а в нарушении правил программирования на С.

 

спасибо IgorKossak .

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...