关于跳出循环

2019-08-14 18:10发布

          主程序的循环,
       while(flag3)
         {
                while(flag1)        //对应按键key0,
                {       
                        TIM_SetCompare1(TIM1,300);
                        LED1=1;
                        delay_ms(500);
                        TIM_SetCompare1(TIM1,0);
                        LED1=0;
                  delay_ms(500);                       
                }       

                while(flag2)        //对应按键key1,
                {
                        delay_ms(10);
                        LED1=1;
                        if(dir)led0pwmval++;
                        else led0pwmval--;
                        if(led0pwmval>300)dir=0;
                        if(led0pwmval==0)dir=1;
                        TIM_SetCompare1(TIM1,led0pwmval);
          }

         }
为什么while(flag3)这个循环一旦进入之后就出不来了!我设定了按键使flag3取反!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
刺猬ZDYZ
1楼-- · 2019-08-14 21:49
确定按键按下后是否能处理到flag3的取反程序。或者按键按下是否触发中断函数,由中断函数处理flag3的取反。上面的程序看不到flag3的取反程序,如果直接将flag3的取反程序放在外面,又不通过任何中断去处理可能就永远执行不到了。可以将flag3的处理程序放在while(flag3)里面。另外while(flag2)与while(flag3)是否会出现死循环也需要注意下。
jokeym
2楼-- · 2019-08-15 02:24
while外面取反了吧
peanut
3楼-- · 2019-08-15 03:38
jokeym 发表于 2017-8-3 18:12
while外面取反了吧

我设置的是按键按下,flag3取反,可是,并不能起到跳出循环的效果
haysen
4楼-- · 2019-08-15 06:07
peanut 发表于 2017-8-3 18:31
我设置的是按键按下,flag3取反,可是,并不能起到跳出循环的效果

只取反了flag3,又没取反flag2 flag1,那么就是死在while(flag1)里面啊,这个while出不来
NIDO
5楼-- · 2019-08-15 10:01
 精彩回答 2  元偷偷看……
18811707971
6楼-- · 2019-08-15 14:03
里面还有循环

一周热门 更多>