关于跳出循环

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
2019-08-14 21:49
确定按键按下后是否能处理到flag3的取反程序。或者按键按下是否触发中断函数,由中断函数处理flag3的取反。上面的程序看不到flag3的取反程序,如果直接将flag3的取反程序放在外面,又不通过任何中断去处理可能就永远执行不到了。可以将flag3的处理程序放在while(flag3)里面。另外while(flag2)与while(flag3)是否会出现死循环也需要注意下。

一周热门 更多>