• uc/os任务创建


    问题描述:

         uc/os中任务创建

    问题解决:

    创建一个任务,任务从无到有。任务创建函数分两种,

    一种是基本的创建函数OSTaskCreate,

    另一种是扩展的任务创建函数OSTaskCreateExt。

    着重讲解OSTaskCreate。

        创建任务OS_TaskCreat。

        堆栈初始化函数OSTaskStkInit的一个版本

    clipboard

                            操作系统任务状态转换图

    clipboard

    注:

        OSTaskStkInit()        初始化堆栈

        OS_TCBInit()             TCB初始化

    clipboard

    注:

        在OS_TCBInit函数中初始化了任务优先级以及TCB其他信息

    clipboard

    注:

        如上设置了当前任务的OSTCBBitX和OSTCBBitY

    clipboard

    注:

        如上设置当前就绪任务链以及任务优先级

    clipboard

    OS_Shed解释

    clipboard

    注:

        通过本函数,可以找出优先级最高的任务

        通过OSUnMapTbl[]获取任务优先级:

    713309245

    其中 0为最高优先级,63为最低优先级,因此查找优先级最高的任务,使用的是优先级判定表OSUnMapTbl[],OSUnMapTbl[]表中的数值表示的是一个8bit的数据最低位为1的位置,例如:1000 0000 最低位为1的位置是在第7位,那么OSUnMapTbl[128]的值就是7;1000 0010 最低位为1的位置是在第1位,那么OSUnMapTbl[130]的值就是1;

    通过OS_ScheNew可以获取最高优先级OSPrioHighRdy,然后进行调度

    注:

        以上详细讲解了ucos任务创建的流程,注意任务创建过程中可能存在任务调度(最高优先级程序切换)

  • 相关阅读:
    家庭网络拓扑架构
    网络基础概念(IP、MAC、网关、子网掩码)
    centos7搭建docker并部署lnmp (转)
    docker容器里面安装php的redis扩展
    docker 安装ps命令
    Docker Ubuntu容器安装ping
    docker 安装nginx
    CentOS7 安装特定版本的Docker
    docker 卸载旧版本
    Centos7搭建Docker部署LNMP
  • 原文地址:https://www.cnblogs.com/luosongchao/p/3295543.html
Copyright © 2020-2023  润新知