初识μC/OS-II

μC/OS-II初始化——OSInit();

函数OSInit(),即initialize Operation System。在使用μC/OS-II提供的任何功能之前,必须调用OSInit()函数。OSInit()函数建立了两个任务:

  1. 空闲任务——在所有其他任务均未就续时运行;
  2. 统计任务——计算CPU的利用率

在开始多任务之前必须建立至少一个任务——例如OSStart()。调用OSStart(),将控制权交给μC/OS-II内核,开始运行多任务。OSStart()将判断所有建立任务中哪一个任务是最高优先级的,并开始运行这个任务。

在启动多任务之前,至少要先建立一个任务,这一点非常重要,不这样做,应用程序就会崩溃。实际上,如果希望建立计算CPU的利用率时,也必须先建立一个任务。μC/OS-II允许建立多达63个用户任务。每个任务都必须分配有独立的优先级(0~62),其中0是最高优先级。

μC/OS-II创建一个任务——OSTaskCreate()

如果想让μC/OS-II管理用户任务,必须先建立任务。可以通过将任务的地址和其他参数传递到以下两个函数之一来建立任务:OSTaskCreate() 或 OSTaskCreateExt()。OSTaskCreateExt()是OSTaskCreate()的扩展,提供了一些附加的功能,建立任务时更加灵活,但是也会增加一些额外的开销。用2个函数中的任何一个都可以建立任务。任务可以在多任务调度开始前建立,也可以在其他任务执行过程中建立。在开始多任务调度前(调用OSStart())前,必须建立至少一个任务。任务不能由ISR建立。

INT8U OSTaskCreate( void  (*task)(void *P_arg),  /* 任务代码地址 */
                    void  *P_arg,                /* 任务参数 */
                    OS_STK *ptos,                /* 任务堆栈栈顶 */
                    INT8U prio )                 /* 任务的优先级 */
INT8U  OSTaskCreateExt ( void   (*task)(void *pd),    /* 任务的地址 */
                         void    *pdata,              /* 任务参数 */
                         OS_STK  *ptos,               /* 任务堆栈的栈顶 */
                         INT8U    prio,               /* 任务的优先级 */
                         INT16U   id,                 /* 任务的ID */
                         OS_STK  *pbos,               /* 任务堆栈的栈底地址 */
                         INT32U   stk_size,           /* 堆栈的大小 */
                         void    *pext,               /* 扩展块的地址 */
                         INT16U   opt )               /* 包含任务的附件信息 */

未完待续...

posted @ 2013-04-26 22:31  此岸幸福  阅读(672)  评论(0编辑  收藏  举报