初级会员

- 积分
- 102
- 金钱
- 102
- 注册时间
- 2017-8-3
- 在线时间
- 29 小时
|
2金钱
主程序的循环,
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取反!
|
最佳答案
查看完整内容[请看2#楼]
确定按键按下后是否能处理到flag3的取反程序。或者按键按下是否触发中断函数,由中断函数处理flag3的取反。上面的程序看不到flag3的取反程序,如果直接将flag3的取反程序放在外面,又不通过任何中断去处理可能就永远执行不到了。可以将flag3的处理程序放在while(flag3)里面。另外while(flag2)与while(flag3)是否会出现死循环也需要注意下。
|