想实现一个设计模式,实现的功能就是 按set键进入设置模式,按上下键调节值的大小,再按set键完成参数设置,并进入下一个参数的设置。
我的思路是这样的:
主架构分为三部分:
1、管理函数:
只调用switch(x) x初始值为0
case 0: 设置参数1的函数;break;
case 1: 设置参数2的函数;break ;
default: x=0 ;
2、设置参数1的函数:
while(1)循环
{
显示要设置的数据;
等待键值;
判断键值进行操作;
上下键设置值的大小;
set键完成设置并调用 管理函数且x的值+1;
}
2、设置参数2的函数:
主体和设置参数1的函数一致,不做赘述;
以上是我写的代码的思路,但是发现无法实现,仅仅切换就有问题,具体现象是,切换到设置参数2后,按set键并没有回到设置函数1的函数,而是卡在这,但是x值已经变了,也调用了管理函数,为什么回不去呢?求指点,或者给指引一条其他的思路都可以。。拜托各位!!!已经多次修正测试好几天了,依旧无果。。想看代码的留言,怕大家看不下去,遂暂时不留代码。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
: ????
你是用三个按键吧,我的想法是用四个。首先主函数里面死循环,先设一个变量i,用一个按键控制它的值为1或2,再用switch语句调用这两个函数,和你的一样,不过我感觉不用default。那么这样程序就会在主函数里面不停地检测i的值,从而达到每按一次按键,就切换一种功能的效果。接着说两个调用的子函数,你应该最少先设两个全局变量,用于两个子函数,然后每个函数里面再添加一个按键用于控制键的大小,这样再把设置的参数传回给主函数输出就OK了。
我明白你是想利用设置参数的子函数里面加死循环,然后保持这样的状态,但是你不妨按我思路试一下,只不过我这种思路弊端就是如果要实现太多功能的话,就要用更多的按键,资源利用率太低。
我仔细想了一下你的程序思路,我感觉你的程序问题如下:你的x初始值是0,那么马上就调用第一个函数,然后设置完成以后x为1,接着调用管理函数,立马进入第二个函数,再设置好参数以后,x值又变了,猜的没错应该是2,然后default,x变成0,然后函数就执行出去了,所以说在管理函数里面加一个死循环,把switch包含进去就可以了。如下
while(1)
{
.......
switch(x) x初始值为0
case 0: 设置参数1的函数;break;
case 1: 设置参数2的函数;break ;
default: x=0;
......
}
我分两部分回答你吧;
1、就是你提供的思路,我如果没理解错的话,你的意思就是每一个按键控制一个参数的设置,按1进入参数1的设置,按2进入参数2的设置,对吧?我相信这样是没问题的,但是我觉得按键太多了,不太符合我目前想做的这么个小玩意的思路,我只是想就好像小时候的那个电子表一样,set键设置时间,set键设置日期,set键回归原位。这是我的目标;
2、你提供的思路我也有想到过,但是现象是可以进入死循环,却回不了界面1,两个界面的话问题还不是很大,但是一旦超过两个,假设我有4个界面,就只能在2-4界面来回切换,所以我找不到我哪的逻辑有问题。我之前用c语言编辑模拟了一下也是相同的结果。而且这么写的方式及其不稳定,用c模拟的时候次数达到足够多的数量程序就崩溃了,所以我感觉在stm32上应该也有一样的隐患。所以我才选择看看能不能找一个其他的思路。
要不试试中断?
一周热门 更多>