发 帖  
原厂入驻New
申请华秋企业认证 多层板首单免费打样!
30s提交资料,10分钟通过审核(免费赔付+顺丰包邮)>>立即报名
如何让uocs II中多task交替运行的task2,3,4也能运行到?
60 cpu TASK
分享
uocs II 中多task交替运行的问题。
如果有多个任务,task1,task2,task3,task4,task5
优先级相应从高到低。
void Task1(void)
{
  while(1)
  {
    Uart_printf("Task1\n");
    OStimeDly(300);  //3秒运行一次
  }
}
void Task2(void)
{
  while(1)
  {
    Uart_Printf("Task2\n");
    OSTimeDly(300);  //3秒运行一次
  }
}
void Task3(void)
{
  while(1)
  {
    Uart_Printf("Task3\n");
    OSTimeDly(300);  //3秒运行一次
  }
}
void Task4(void)
{
  while(1)
  {
    Uart_Printf("Task4\n");
    OSTimeDly(300);  //3秒运行一次
  }
}
void Task5(void)
{
  while(1)
  {
    Uart_Printf("Task5\n");
    OSTimeDly(300);  //3秒运行一次
  }
}
我想问如果用OSTimeDly()来释放本task1的CPU转而运行下一最高优先级就绪态的task2,如果task2里运行时间超过了3s,那么马上又会执行task1,这样task2,3,4后面的都执行不到了。  
有什么好办法,能让其他的的task2,3,4也能运行到呢?
0
2019-10-12 06:33:20   评论 分享淘帖 邀请回答
3个回答
当然我这个代码里可以运行,假如我的task2 因为某些必要 代码运行超过3s,才运行到OSTimeDly(300),  那么后面的task就运行不到了
2019-10-12 10:31:17 评论

举报

你自己测一下看看2,3,4任务会不会运行。
2019-10-12 10:50:33 评论

举报

我也是初学,但我觉得还是会运行,OS只是DLY时间,运行时间不在这里。而且你的想法等于是中断3s不进行任务调度,我觉得这样的程序就已经有问题了,违反RTOS的原则了。
2019-10-12 11:10:26 评论

举报

只有小组成员才能发言,加入小组>>

153个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表