UCOS_II學習筆記—任務管理之建立任務函數分析

來源:互聯網
上載者:User

   想讓μC/OS-Ⅱ系統管理使用者的任務,使用者必須要先建立任務。使用者可以通過傳遞任務地址和其它參數到以下兩個函數之一來建立任務:OSTaskCreate()
或 OSTaskCreateExt()。OSTaskCreate()與μC/OS是向下相容的,OSTaskCreateExt()是OSTaskCreate()的擴充版本,提供了一些附加的功能。用兩個函數中的任何一個都可以建立任務。任務可以在多任務調度開始前建立,也可以在其它任務的執行過程中被建立。在開始多任務調度(即調用OSStart())前,使用者必須建立至少一個任務。任務不能由中斷服務程式(ISR)來建立。

 

函數

功能描述

OSTaskCreate()

建立任務

OSTaskCreateExt()

建立任務

 


函數名 OSTaskCreate
參數 task是任務代碼的指標
pdata是當任務開始執行時傳遞給任務的參數的指標
ptos是分配給任務的堆棧的棧頂指標
prio是分配給任務的優先順序
功能描述 建立任務
函數原型 INT8U OSTaskCreate (void        (*task)(void *pd), 
                                        void        *pdata, 
                                       OS_STK *ptos, 
                                       INT8U      prio)

{

    
OS_ENTER_CRITICAL(); //進入臨界期0

    
if (OSTCBPrioTbl[prio] == (OS_TCB *) 0) //判斷該優先順序是否已經存在

    
{

        
OSTCBPrioTbl[prio] = (OS_TCB *) 1;  //保留該優先順序

        
OS_EXIT_CRITICAL(); //退出臨界區0

        

        
psp = (OS_STK *) OSTaskStkInit(task, ppdata, ptos, 0);  
//初始化任務堆棧

        
err = OS_TCBInit(prio, psp, (OS_STK *) 0, 0, 0, (void *) 0, 0); //初始化任務控制塊TCB

        
if (err == OS_NO_ERR) //初始化TCB沒有出錯

        
{

             
OS_ENTER_CRITICAL();   //進入臨界區1

             
OSTaskCtr++;       //任務數自加

             
OS_EXIT_CRITICAL();    //退出臨界區1

             
if (OSRunning == TRUE) //如果系統已經運行(即在OS運行時建立任務)

             
{

                  
OS_Sched();   //任務調度(該函數不再返回)

             
}

        
}

        
else //初始化TCB出錯

        
{

             
OS_ENTER_CRITICAL(); //進入臨界區2

             
OSTCBPrioTbl[prio] = (OS_TCB *) 0; //初始化TCB出錯了,
釋放TCB

             
OS_EXIT_CRITICAL();  //退出臨界區2

        
}

        

        
return (err); //返回初始化TCB出錯資訊

    
}

    
OS_EXIT_CRITICAL();//退出臨界區0

 

    
return (OS_PRIO_EXIST); //返回錯誤資訊,該優先順序已經存在

}

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.