iwanthaha 发表于 2019-12-12 10:05:52

RTX 抢占式任务调度如何实现?

如题,RTX5中设置了如下两个任务A和B,且AppTaskA 优先级高于AppTaskAB;
void AppTaskA (void *argument)
{
// ...

    //main loop
    while(1)
    {      
      Wdg_Feed();

      if(Check())
      {
            RUN();
      }
      else
      {
            STOP();
      }

       //osDelay(10);
    }

    //end loop

}

void AppTaskB (void *argument)
{
    while(1)
    {      
      Wdg_Feed();      
      Send();   
      osDelay(20);
    }

}


在RTX_Config.h中取消Round-Robin Thread swtiching,意图使用抢占式调度(到底如何使用抢占式调度?);

不解之处:为何注释了AppTaskA 中的osDelay(10);,系统还能够进到AppTaskB?
AppTaskA的优先级高于AppTaskB,而且有没有出让系统控制权,为何AppTaskB还能执行?

求解,谢谢大家~!


eric2013 发表于 2019-12-12 10:46:20

1、把你这两个任务的创建函数贴出来。
2、两个任务里面仅留下大while循环里面的osDelay做测试。

iwanthaha 发表于 2019-12-12 11:18:56

谢谢硬汉兄,while里面仅留 osDelay 就好了,AppTaskB不会进了。原因是代码乌龙了。。。。:D
页: [1]
查看完整版本: RTX 抢占式任务调度如何实现?