luchao5236 2020-03-17 17:01 采纳率: 0%
浏览 236
已结题

stm32 驱动12864(串),菜单函数func函数不能执行,求各位大神帮帮忙

#include "menu.h"
#include "stm32f10x.h"
#include "12864.h"
#include "systick.h"
#include
#include
#include "gongnenganjian.h"
#include "biaozhi.h"
#include "changwenshui.h"
#include "qipaoshui.h"
#include "bingshuianjian.h"
#include "bsp_usart1.h"
extern int queding,shezhimoshi,fanhui,xiangxia,xiangshang;

/*²Ëµ¥½á¹¹Ìå*/
typedef struct menu
{
u8 range_from,range_to; //µ±Ç°Ñ¡ÔñµÄÏʼ¼°½áÊø·ûºÅ
u8 itemCount;//ÏîÄ¿×ÜÊý
u8 selected;//µ±Ç°Ñ¡ÔñÏî
u8 menuItems[17];//²Ëµ¥ÏîÄ¿
struct menu **subMenus;//×Ӳ˵¥
struct menu *parent;//Éϼ¶²Ëµ¥£¬ÈôÊÇÖ÷²Ëµ¥ÔòΪnull
void (
*func)();//Ñ¡ÔñÏàÓ¦°´¼üºóÖ´Ðеĺ¯Êý

}Menu;

Menu kaiji = {
0,3,4,0,
{
"¡¡¡¡ÆøÅÝË®»ú ",
"¡¡¡¡±¨¾¯£ºÎÞ ",
" ",
" ",
}
};

Menu MainMenu1 = {
0,3,4,0, //ĬÈÏÏÔʾ0-3Ï×ܹ²4Ïµ±Ç°Ñ¡Ôñ0Ï
{
"ģʽѡÔñ \x10",//"\x10"±íʾһ¸öС¼ýÍ·
"ѧϰģʽ \x10",
"ÆøÅÝË® \x10",
"ģʽÉèÖà \x10",
}
};

//ģʽѡÔñÄ£¿éÄÚÈÝÏÔʾ
Menu dis1Menu = {
0,2,3,0, //ĬÈÏÏÔʾ0-3Ï×ܹ²4Ïµ±Ç°Ñ¡Ôñ0Ï
{
"¡¡¡¡Ä£Ê½Ñ¡Ôñ¡¡¡¡",

"ÆøÅÝË®¡¡¡¡¡¡¡¡¡¡",//±íʾһ¸öС¼ýÍ·
"±ùË®¡¡¡¡¡¡¡¡¡¡¡¡¡¡",
"³£ÎÂË®¡¡¡¡¡¡¡¡¡¡",
}
};
Menu dis2Menu = {
0,3,4,0, //ĬÈÏÏÔʾ0-3Ï×ܹ²4Ïµ±Ç°Ñ¡Ôñ0Ï
{
"secondline1 \x10",//"\x10"±íʾһ¸öС¼ýÍ·
"secondline2 \x10",
"secondline3 ",
"secondline4 \x10",
}
};

Menu kaijiMenu; //¿ª»ú»­Ãæ
Menu *currentMenu;//µ±Ç°²Ëµ¥
/
ÓÃÓÚÏÔʾ²Ëµ¥*/
void displaymenu(u8 line)
{
int i;
line = 3-(currentMenu->range_to-line);
/*4´ÎÑ­»·´òÓ¡²Ëµ¥*/
for(i = 0;i Display_LCD_String(i,currentMenu->menuItems[i+currentMenu->range_from],5);

con_disp(line,1);

}

void displaykaiji(u8 line)
{
int k;
line = 3-(kaijiMenu->range_to-line);
/*4´ÎÑ­»·´òÓ¡²Ëµ¥*/
for(k = 0;k Display_LCD_String(k,kaijiMenu->menuItems[k+kaijiMenu->range_from],5);

con_disp(line,0);

}

void func(void)
{

        printf("\r\n ----µçƽ±ä»¯-1--\r\n");

}

void initmenu(void)
{
kaijiMenu = &kaiji;
currentMenu = &MainMenu1;

kaiji.subMenus = malloc(sizeof(&kaiji)*4);
kaiji.subMenus[0] = &dis1Menu;
kaiji.subMenus[1] = &dis2Menu;
kaiji.subMenus[2] = NULL;
kaiji.subMenus[3] = NULL;


MainMenu1.subMenus = malloc(sizeof(&MainMenu1)*4);
MainMenu1.subMenus[0] = &dis1Menu;
MainMenu1.subMenus[1] = &dis2Menu;
MainMenu1.subMenus[2] = NULL;
MainMenu1.subMenus[3] = NULL;

MainMenu1.func = malloc(sizeof(&func)*4);
MainMenu1.func[0] = &func;
MainMenu1.func[1] = &func;
MainMenu1.func[2] = &func;
MainMenu1.func[3] = &func;

MainMenu1.parent = NULL;//mainmenu is top menu
//ģʽģ¿é¹¦ÄÜʵÏÖ
dis1Menu.subMenus = malloc(sizeof(&dis1Menu)*4);
dis1Menu.subMenus[0] = &dis1Menu;
dis1Menu.subMenus[1] = &dis1Menu;
dis1Menu.subMenus[2] = NULL;
dis1Menu.subMenus[3] = NULL;

dis1Menu.func = malloc(sizeof(&func)*4);
dis1Menu.func[0] = &func;
dis1Menu.func[1] = &func;
dis1Menu.func[2] = &func;
dis1Menu.func[3] = &func;

dis1Menu.parent = &MainMenu1;//dis1menu parent menu is mainmenu1


dis2Menu.subMenus =  malloc(sizeof(&dis1Menu)*4);
dis2Menu.subMenus[0] = NULL;
dis2Menu.subMenus[1] = NULL;
dis2Menu.subMenus[2] = NULL;
dis2Menu.subMenus[3] = NULL;

dis2Menu.func = malloc(sizeof(&func)*4);
dis2Menu.func[0] = NULL;
dis2Menu.func[1] = NULL;
dis2Menu.func[2] = NULL;
dis2Menu.func[3] = NULL;

dis2Menu.parent = &MainMenu1;//dis2menu parent menu is mainmenu1

}
void menutest(void)
{
initmenu();
displaymenu(currentMenu->selected);
}

void chushi_menu(void)

{
initmenu();
displaykaiji(kaijiMenu->selected);
}

void caidan_queding(void)
{
if((queding==1)&&(shezhimoshi==1))
{
if(currentMenu->subMenus[currentMenu->selected] !=NULL)
{
currentMenu = currentMenu->subMenus[currentMenu->selected];
displaymenu(0);
queding=0;

                            printf("\r\n ----È·¶¨---\r\n");
                        }
                    }

}

void caidan_xuanze(void)
{
if((fanhui==1)&&(shezhimoshi==1))
{
if(currentMenu->parent!=NULL)
{
currentMenu = currentMenu->parent;
displaymenu(currentMenu->selected);
fanhui=0;
printf("\r\n ---·µ»Ø---\r\n");
}
}
}

void caidan_xiangxia(void)
{
if((xiangxia==1)&&(shezhimoshi==1))
{

if(currentMenu->selected == currentMenu->itemCount-1)

          xiangxia=0;

        else
        {
                    currentMenu->selected++;
                    if(currentMenu->selected>currentMenu->range_to)
                            {
                                currentMenu->range_to = currentMenu->selected;
                                currentMenu->range_from = currentMenu->range_to-3;
                            }
                            displaymenu(currentMenu->selected);
                            xiangxia=0;
                            printf("\r\n ----ÏçÏÂ---\r\n");
        }
}   

}

void caidan_xiangshang(void)
{
if((xiangshang==1)&&(shezhimoshi==1))
{
if(currentMenu->selected == 0)
xiangshang=0;

else
{
currentMenu->selected--;
if(currentMenu->selected < currentMenu->range_from)
{
currentMenu->range_from = currentMenu->selected;
currentMenu->range_to = currentMenu->range_from+3;
}
displaymenu(currentMenu->selected);

                        }
                           xiangshang=0;                    
}

}

  • 写回答

2条回答 默认 最新

  • m0_46469867 2020-03-17 17:18
    关注

    亲,您好,我是CSDN必问的Q妹,你这个问题在必问区提问可能会更快速解决哦,邀您体验:https://biwen.csdn.net/

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料