中级会员
- 积分
- 230
- 金钱
- 230
- 注册时间
- 2016-3-26
- 在线时间
- 83 小时
|
10金钱
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也能运行到呢?
|
最佳答案
查看完整内容[请看2#楼]
当然我这个代码里可以运行,假如我的task2 因为某些必要 代码运行超过3s,才运行到OSTimeDly(300), 那么后面的task就运行不到了
|