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

 
 
> Вопрос по синтаксису, AVRStudio+WinAVR
swisst
сообщение Jul 5 2007, 09:13
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 163
Регистрация: 16-02-07
Из: Харьков
Пользователь №: 25 425



Среда разработки и компилятор AVRStudio+WinAVR, процессор ATMega88

Переопределяю тип данных:

typedef struct
{
char Name;
char Type_Item;
char Prev;
char Next;
void (*Show_Proc) ();
void (*Show_Edit_Proc) ();
void (*Menu_Read) ();
void (*Menu_Write) ();
char Min_Value;
char Max_Value;
char Step_Value;

}Menu_Item;


Объявляю переменную такого типа:

Menu_Item AVT_Menu_Item[14]={...заполняю константами...};

Такой массив будет размещаться в ОЗУ, а мне необходимо разместить его во FLASH. Подскажите, как это сделать ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dimmy
сообщение Jul 5 2007, 10:22
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 106
Регистрация: 12-09-05
Пользователь №: 8 503



Просто там явные проблемы с синтаксисом. Вот это:
typedef struct
{
char Name;
char Type_Item;
char Prev;
char Next;
void (*Show_Proc) ();
void (*Show_Edit_Proc) ();
void (*Menu_Read) ();
void (*Menu_Write) ();
char Min_Value;
char Max_Value;
char Step_Value;

}Menu_Item;

уже создает экземпляр структуры Menu_Item с выделением под него памяти.

А это (можно даже без typedef):

typedef struct MENU_ITEM
{
char Name;
char Type_Item;
char Prev;
char Next;
void (*Show_Proc) ();
void (*Show_Edit_Proc) ();
void (*Menu_Read) ();
void (*Menu_Write) ();
char Min_Value;
char Max_Value;
char Step_Value;
};
- только объявление структуры. Оно позволяет создавать экземпляры (переменные, константы) типа MENU_ITEM:
struct MENU_ITEM MyMenu; //это переменная
const struct MENU_ITEM MyMenuArray[]={...}; //а это константа. В IAR,например, она по умолчанию разместится в памяти программ, поскольку использовано кл. слово "const"
А что касается WinAVR:
//--------------------------------
#include <avr/pgmspace.h>
//--------------------------------
typedef struct MENU_ITEM
{
char Name;
char Type_Item;
char Prev;
char Next;
void (*Show_Proc) ();
void (*Show_Edit_Proc) ();
void (*Menu_Read) ();
void (*Menu_Write) ();
char Min_Value;
char Max_Value;
char Step_Value;
};
//------------------------------------------
struct MENU_ITEM MyMenuArray[] PROGMEM={...};

Сообщение отредактировал Dimmy - Jul 5 2007, 10:53
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 8 2007, 19:14
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Dimmy @ Jul 5 2007, 13:22) *
Просто там явные проблемы с синтаксисом. Вот это:

typedef struct
{
...
}Menu_Item;
уже создает экземпляр структуры Menu_Item с выделением под него памяти.

Нет тут никаках проблем с синтаксисом, и не создается никакого экземпляра Menu_Item.
Menu_Item - это имя нового типа - структуры без тэга.


Цитата
А это (можно даже без typedef):
...
struct MENU_ITEM MyMenu; //это переменная

наврятли это будет чем-то удобнее чем
Menu_Item MyMenu; // это переменная

Цитата
To sensor_ua. Тыкаю по структурам. Керниган и ричи, гл.6:

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

Цитата(Tracer @ Jul 6 2007, 16:11) *
const Menu_Item_t AVT_Menu_Item[] EEMEM ={

Автору вопроса структуру надо было во флеш разместить, а не в eeprom..
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 15:43
Рейтинг@Mail.ru


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