2020-01-20 19:05发布
68336016 发表于 2014-5-28 18:46 这个函数,里面有while循环,你要是不按键让其跳出,单片机不就在死等了? ...
lswhome 发表于 2014-5-28 22:17 是的,这个死等就能达到要求哇。。。 不要死等的也可以,就是里面没有WHILE,类似扫描键盘那种,高速扫描 ...
mcu_lover 发表于 2014-5-29 08:08 你的思路是对的。不需要使用结构体的菜单。即便是使用结构体,最终的调整设置等界面的方式还是类似于你写的 ...
最多设置5个标签!
是的,这个死等就能达到要求哇。。。
不要死等的也可以,就是里面没有WHILE,类似扫描键盘那种,高速扫描,如果有改变,就会显示改变的内容,如果没有改变,则进入函数就会自动退出,啥也不执行。。。总之我这种菜单就是很浪费代码资源,但要说实现的功能,貌似我目前的简单应用都能达到。话说那结构体的菜单真没人回答呀,唉。。。。
我就是仿造傻孩子的那种结构体菜单的
MenuItem SpeedSelectMenu[SPEEDSELECT_MENUCOUNT] =
{ //MenuCount,ParentIndex,MenuString,MenuFunc,SubMenu,ParentMenu
{SPEEDSELECT_MENUCOUNT,0,"速度1= RPM",Gui_SelectCoef_Ns1,NULL,MainMenu},
{SPEEDSELECT_MENUCOUNT,0,"速度2= RPM",Gui_SelectCoef_Ns2,NULL,MainMenu},
{SPEEDSELECT_MENUCOUNT,0,"速度3= RPM",Gui_SelectCoef_Ns3,NULL,MainMenu},
{SPEEDSELECT_MENUCOUNT,0,"速度4= RPM",Gui_SelectCoef_Ns4,NULL,MainMenu},
};
平时菜单翻滚,进入,退出通过一个函数A来刷新,这函数A在main的主循环调用
如果进入到了菜单函数B,那么就那么通过修改函数指针pGuiFunction,把main主循环里的函数改成函数B。
这样主循环就不会堵死,其它事情也能得到处理。
虽然看起来比较龌龊,但是没有其它更好思路前,我这么用也没出什么问题
main()
{
while(1)
{
(*pGuiFunction)();
其他一些函数();
}
}
嗯,明白您的意思了,现在我也学会了结构体菜单的基本工作逻辑,得空了就写一个比较通用的,这样在很多项目上只要拿过来稍微修改就可以使用了,这样会节省很多时间。。。感谢各位的指点!!谢谢!!!
一周热门 更多>