【发布时间】:2023-03-27 14:52:01
【问题描述】:
while (1)
{
c = getchar();
switch(state)
{
case 0:
if((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == Bit_SET))
{
state=1;
}
if ( c=='p')
{
state = 2;
}
break;
case 1 :
if((GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) != Bit_SET))
{
state = 0;
}
break;
case 2:
iprintf("%s",led_name_arr[i]);
if (c=='r')
{
state=0;
}
break;
}
}
我想打印 printf 然后到达 state2 .. 如何实现。下面是我尝试过的以及卡住的地方。
伪代码:
if ( c==P)
{
printf(" hi");
state 2;
}
** 在这种情况下 printf 语句不会被执行 ** 或
case 2:
iprintf("%s",led_name_arr[i]);
if (c=='r')
{
state=0;
}
break;
** 在这种情况下 printf 语句会循环打印 **
我不希望 while 循环停止,在连续循环中我希望 case 0 继续工作,但是当它获得输入 p .. 它暂停并执行 printf ... 并等待直到它得到一个 r 来恢复 case 0 ....因此程序永远不会停止,而是等待“P”或“R”来执行每个案例......我希望我有意义
任何帮助将不胜感激。
【问题讨论】:
-
缩进你的代码怎么样?
-
不要在你的箱子里放额外的 {} 大括号。他们会让你感到困惑。
-
@CarlNorum 它确实有一个中断.. 检查代码中有 3 个中断
标签: c