转载

uC/OS-II 函数之OSInit()

获得更多资料欢迎进入 我的网站 或者 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 }    
正文到此结束
Loading...