该问题出现在我需要使用 while(1) 执行 Type-C 状态机发送数据时。使用break 都退出不了(这个坑踩了两次,记录一下)。
函数原型如下:
int i=0; On =1;
while(1)
{
if( On == 1 )
{
while( 1 )
{
i ++;
if( i >3 )
{
i = 0; //清除退出条件
break;
}
}
}
}
如果直接执行上面的程序,break 退出 while(1) 后,随即又进入该死循环。
正确的应该如下:
int i=0; On =1;
while(1)
{
if( On == 1 )
{
while( 1 )
{
i ++;
if( i >3 )
{
On = 0; //清除进入条件
i = 0; // 清除退出条件
break;
}
}
}
}
注意:在执行有条件进入的循环中,当退出该循环时,记得把进入条件清零。让该函数真正的退出,以便下次进入或执行其他指令。