码迷,mamicode.com
首页 > 其他好文 > 详细

uC/OS-II 函数之OSInit()

时间:2015-08-01 23:36:50      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:os   uc-os-ii   

获得更多资料欢迎进入我的网站或者 csdn或者博客园

对于有热心的小伙伴在微博上私信我,说我的uC/OS-II 一些函数简介篇幅有些过于长应该分开介绍。应小伙伴的要求,特此将文章分开进行讲解。本文主要介绍OSInit()初始化函数

OSInit()主要作用

在uC/OS II的学习中,OSInit(OS_CORE.C )(函数原型位于);是一个重要的函数,它在OS应用中的main()函数中首先被调用,是OS运行的第一个函数,它完成各初始变量的初始化。

主要工作:完成下面的初始化;

 OSInitHookBegin();                                           /* 调用用户特定的初始化代码(通过一个接口函数实现用户要求的插件式进入系统中)*/
OS_InitMisc();                                               /* 初始化变量*/
OS_InitRdyList();                                           /* 初始化就绪列表*/
OS_InitTCBList();                                             /* 初始化OS_TCB空闲列表*/
OS_InitEventList();                                          /* 初始化OS_EVENT空闲列表*/
OS_InitTaskIdle();                                            /*创建空闲任务*/

程序注释详解:

void  OSInit (void)
{
#if OS_TASK_CREATE_EXT_EN > 0u
#if defined(OS_TLS_TBL_SIZE) && (OS_TLS_TBL_SIZE > 0u)
    INT8U  err;
#endif
#endif
    OSInitHookBegin();                              /* 调用用户特定的初始化代码(通过一个接口函数实现用户要求的插件式进入系统中)*/
    OS_InitMisc();                                              /* 初始化变量*/   /* Initialize miscellaneous variables       */
    OS_InitRdyList();                                           /* 初始化就绪列表*/   /* Initialize the Ready List                */
    OS_InitTCBList();                                           /* 初始化OS_TCB空闲列表*/    /* Initialize the free list of OS_TCBs      */
    OS_InitEventList();                                               /* 初始化OS_EVENT空闲列表*/ /* Initialize the free list of OS_EVENTs    */
#if (OS_FLAG_EN > 0u) && (OS_MAX_FLAGS > 0u)
    OS_FlagInit();                                            /* 初始化事件标志结构*/       /* Initialize the event flag structures     */
#endif
#if (OS_MEM_EN > 0u) && (OS_MAX_MEM_PART > 0u)
    OS_MemInit();                                         /* 初始化内存管理器*/       /* Initialize the memory manager            */
#endif
#if (OS_Q_EN > 0u) && (OS_MAX_QS > 0u)
    OS_QInit();                                            /* 初始化消息队列结构*/      /* Initialize the message queue structures  */
#endif
#if OS_TASK_CREATE_EXT_EN > 0u
#if defined(OS_TLS_TBL_SIZE) && (OS_TLS_TBL_SIZE > 0u)
    OS_TLS_Init(&err);                                        /* 创建任务前初始化TLS*/      /* Initialize TLS, before creating tasks    */
    if (err != OS_ERR_NONE) {
        return;
    }
#endif
#endif
    OS_InitTaskIdle();                                         /* 创建空闲任务(无条件)Create the Idle Task */
#if OS_TASK_STAT_EN > 0u
    OS_InitTaskStat();                                /* 创建统计任务*/           /* Create the Statistic Task                */
#endif
#if OS_TMR_EN > 0u
    OSTmr_Init();                                       /* 初始化时间管理器*/             /* Initialize the Timer Manager             */
#endif
    OSInitHookEnd();                                                 /*调用用户特定的初始化代码*/
#if OS_DEBUG_EN > 0u
    OSDebugInit();
#endif
}  

版权声明:本文为博主原创文章,未经博主允许不得转载。

uC/OS-II 函数之OSInit()

标签:os   uc-os-ii   

原文地址:http://blog.csdn.net/peace1213/article/details/47192031

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!