请教:各位大侠在C语言switch中要延时一些时间怎样搞?

2019-12-13 18:20发布

看代码,Shop_Process()是在主函数大循环中的,非阻塞,在switch中执行了一些动作后有时候想保持一些时间再进行下一步,各位怎样弄的?
下面的代码用了一个SHOP_DELAY,这个问题很明显,后面的要延时又加SHOP_DELAY1,SHOP_DELAY2,SHOP_DELAY3.....搞得程序很难看
想到用两个变量,一个是延时时间长,一个是要跳转的id,每一次延时之前设置这两个变量,然后进入SHOP_DELAY,完成后再根据id跳转。
感觉这样会好一点。不知道有没有更好的办法?

  1. fsm_rt_t Shop_Process(void)
  2. {
  3.         enum {
  4.                 SHOP_START = 0,
  5.                 SHOP_DELAY,
  6.                 SHOP_NEXT,
  7.     };
  8.         static uint8_t state=SHOP_START;
  9.         static uint16_t tim=0;
  10.         static uint16_t delTim=60;

  11.         uint8_t i;
  12.        
  13.         switch(state)
  14.         {
  15.                 case SHOP_START:
  16.                         LCD_ShowString(0,0,"    显示几秒    ");
  17.                         LCD_ShowString(0,1,"                ");
  18.                         LCD_ShowString(0,2,"                ");
  19.                         state++;
  20.                 case SHOP_DELAY: {
  21.                         if(++tim<100) return fsm_rt_on_going;
  22.                         tim = 0;
  23.                         state = SHOP_NEXT;
  24.                         }break;
  25.                 case SHOP_NEXT: {
  26.                        
  27.                         }break;
  28.                 default:
  29.                         state = SHOP_START;
  30.                         break;
  31.         }
  32.         return fsm_rt_on_going;
  33. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。