硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1914|回复: 2
收起左侧

[RL-RTX] RTX 抢占式任务调度如何实现?

[复制链接]

2

主题

1

回帖

7

积分

新手上路

积分
7
发表于 2019-12-12 10:05:52 | 显示全部楼层 |阅读模式
如题,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还能执行?

求解,谢谢大家~!


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2019-12-12 10:46:20 | 显示全部楼层
1、把你这两个任务的创建函数贴出来。
2、两个任务里面仅留下大while循环里面的osDelay做测试。
回复

使用道具 举报

2

主题

1

回帖

7

积分

新手上路

积分
7
 楼主| 发表于 2019-12-12 11:18:56 | 显示全部楼层
谢谢硬汉兄,while里面仅留 osDelay 就好了,AppTaskB不会进了。原因是代码乌龙了。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 13:34 , Processed in 0.184151 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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