|
struct MenuItem
{
uchar MenuCount; // 当前层节点数
char DisplayString[24]; // 菜单标题
void (*Subs)(void); // 节点函数
struct MenuItem *ChildrenMenus; // 子节点 有子菜单就写入子菜单的结构体名,没有就赋值&Null
struct MenuItem *ParentMenus; // 父节点
}Null;
void NullSubs(void)
{
}
struct MenuItem MainMenu[3];
struct MenuItem SystemInformationMenu[10];
struct MenuItem DisplaySetupMenu[7];
// 结构体初始化
struct MenuItem MainMenu[3] PROGMEM =// 将结构体定义到flash中去
{// MenuCount DisplayString Subs ChildrenMenus ParentMenus
{ 3, "MENU", NullSubs, NULL, NULL },
{ 3, "<System Information>", NullSubs, SystemInformationMenu, NULL },//
{ 3, "<Display Setup>", NullSubs, DisplaySetupMenu, NULL },//DisplaySetupMenu
};
case Enter://确认键,有子菜单则转入子菜单
if (MenuPoint[UserChoose].Subs != NullSubs)
{
(*MenuPoint[UserChoose].Subs)();
}
else if (MenuPoint[UserChoose].ChildrenMenus != Null)
{
MenuPoint = MenuPoint[UserChoose].ChildrenMenus;// 程序一转入子菜单,就死机了?这个地方存在flash中的结构体指针,该如何读取?
UserChoose = 0;
DisplayStart = 0;
}
问题:定义在flash中的结构体,其中的结构体指针,节点函数如何存放的?在外面如何调用? |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|