当前位置:   article > 正文

uc/os中OSStart()函数分析

uc/os中OSStart()函数分析

OSStart()函数分析

多任务的的启动是通过调用OSStart()实现的,而在启动uc/os之前至少需要建立一个应用任务。

OSStart()函数源码

void  OSStart (void)

{

    INT8U y;

    INT8U x;

    if (OSRunning == FALSE) {//参数检验,多任务尚未启动

        y             = OSUnMapTbl[OSRdyGrp];//这几句通过uc/os设定最高优先级查找算法找出当前最高优先级    

        x             = OSUnMapTbl[OSRdyTbl[y]];

        OSPrioHighRdy = (INT8U)((y << 3) + x);

        OSPrioCur     = OSPrioHighRdy;//第一次开始多任务调度,最高优先级任务运行,即当前优先级和最高优先级一样

        OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; //通过最高优先级超找优先级TCB表获得最高优先级TCB

        OSTCBCur      = OSTCBHighRdy;//第一次启动,二者一样

        OSStartHighRdy();//调用启动函数,实质上是将任务栈中保存的值弹回到CPU寄存器中,然后执行中断返回自指令,中断返回指令强制执行任务代码

    }

}

Ø  OSStartHighRdy()永远不返回到OSStart()

Ø 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/406379
推荐阅读
相关标签
  

闽ICP备14008679号