Недавно переделал Micro-Menu под dsPIC (MPLAB C30 v2.04). Делюсь опытом:
Все изменения в файле Menu.h
Во-первых, выбрасываем
Код
#include <avr/pgmspace.h>
Во-вторых, вместо
Код
typedef struct {
void *Next;
void *Previous;
void *Parent;
void *Sibling;
FuncPtr SelectFunc;
FuncPtr EnterFunc;
const char Text[];
} Menu_Item PROGMEM;
должно быть
Код
typedef const struct {
void *Next;
void *Previous;
void *Parent;
void *Sibling;
FuncPtr SelectFunc;
FuncPtr EnterFunc;
char Text[];
}Menu_Item;
и в-третьих, вместо
Код
#define PREVIOUS *((Menu_Item*)pgm_read_word(&CurrMenuItem->Previous))
#define NEXT *((Menu_Item*)pgm_read_word(&CurrMenuItem->Next))
#define PARENT *((Menu_Item*)pgm_read_word(&CurrMenuItem->Parent))
#define SIBLING *((Menu_Item*)pgm_read_word(&CurrMenuItem->Sibling))
#define ENTERFUNC *((FuncPtr*)pgm_read_word(&CurrMenuItem->EnterFunc))
#define SELECTFUNC *((FuncPtr*)pgm_read_word(&CurrMenuItem->SelectFunc))
должно быть
Код
#define PREVIOUS *((Menu_Item*)(CurrMenuItem->Previous))
#define NEXT *((Menu_Item*)(CurrMenuItem->Next))
#define PARENT *((Menu_Item*)(CurrMenuItem->Parent))
#define SIBLING *((Menu_Item*)(CurrMenuItem->Sibling))
#define ENTERFUNC *((FuncPtr*)(CurrMenuItem->EnterFunc))
#define SELECTFUNC *((FuncPtr*)(CurrMenuItem->SelectFunc))
Вроде, всё.
Надеюсь, кому-нибудь поможет.
Сообщение отредактировал reload - May 10 2010, 12:48