gpt4 book ai didi

我们可以在一个 while(1) 循环中使用两个 break 语句吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:59:59 25 4
gpt4 key购买 nike

以下是我的程序。我正在尝试以不同的波特率读取字符,如果在 10 秒内没有收到任何字符,我想跳出循环,类似地,如果收到字母以外的任何字符,我又想跳出循环?我怎样才能做到这一点。请指导我。

char read()
{
while(1)
{
delay_ms(10000);
break;

if((uart_RxChar() >= 65 && uart_RxChar() <= 90) || (uart_RxChar() >= 97 && uart_RxChar() >= 122))
{
uart_TxChar('k');
Glow_GreenLED();
}
else
{
Glow_RedLED();
break;
}
}
}

最佳答案

char read()
{
while(1)
{
delay_ms(10000); // Stops the program
break; // Then leaves

if( (uart_RxChar() >= 65 && uart_RxChar() <= 90) || (uart_RxChar() >= 97 && uart_RxChar() >= 122))
{

uart_TxChar('k');
Glow_GreenLED();
}
else
{
Glow_RedLED();
break;
}
}
}

您尝试做的不会成功。你必须知道延误不是那样的。当您的程序将达到延迟时,它将停止一切 - 也将在延迟期间停止输入。这意味着无论你做什么,它都会等待然后中断。
使用延迟实现您想做的事情的唯一方法是使用线程,让一个线程等待和测量时间,让另一个线程等待输入。在没有线程的情况下执行此操作的一种方法是使用 timer 并将计时器的值用作中断条件。可能是这个link有帮助。不过,您可以根据需要设置尽可能多的 break 条件:

if (CONDITION_1) 
break;
else if (CONDITION_2)
{
printf("something");
break;
}
else if (CONDITION_3)
{
someFunction();
break;
}
else
break;

关于我们可以在一个 while(1) 循环中使用两个 break 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44300892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com