OSTaskCreate()函式分析

2021-04-12 12:59:26 字數 909 閱讀 9238

int8u  ostaskcreate (void (*task)(void *pd),void *p_arg, os_stk *ptos, int8u prio)

;函式返回乙個8位的整型數,呼叫該函式需要四個引數。第乙個引數乙個指標,也就是使用者**的首位址,在平時使用中我們把自己建立的任務的名字作為這個引數就可以了;第三個引數是指向任務堆疊棧頂的指標,通常我們把建立的任務的堆疊陣列的首位址給第三個引數就可以了;第四個引數是任務的優先順序;第二個引數是什麼意思?還不太理解。

os_stk    *psp;

int8u      err;                                ;建立乙個指向資料型別為os_stk的指標和乙個8位的整型數

#if os_arg_chk_en > 0

if (prio > os_lowest_prio)

#endif

;判斷該任務的優先順序是否有效

os_enter_critical();

if (ostcbpriotbl[prio] == (os_tcb *)0)

} else

return (err);

}os_exit_critical();

return (os_prio_exist);

}綜上所述,建立任務時的主要工作是:第一,判斷該優先順序是否有效;第二判斷該優先順序是否被占用,若被占用則釋放掉該優先順序並返回os_prio_exist;第三,若優先順序未被占用,就初始化任務堆疊和任務控制塊,初始化任務控制塊返回正確資訊時,將 ostaskctr加1;第四,判斷osrunning,為真就引發一次任務排程,為假則程式結束。

似乎在建立任務的時候osrunning值為假,所以建立任務的時候,不會引發一次任務排程。

python的函式分類 Python函式分類及操作

1 定義函式 2 def func1 3 testing 4 print in the func1 5 return 0 7 定義過程 8 def func2 9 testing2 10 print in the func2 12 呼叫函式 13 x func1 15 呼叫過程 16 y func2...

linux socket select 函式分析

linux socket select 函式分析 include void fd clr fd,fd set fdset void fd copy fd set fdset orig,fd set fdset copy intfd isset fd,fd set fdset void fd set ...

函式分享 每日PHP函式分享 2021 2 4

array chunk將乙個陣列分隔成多個 array chunk array array,int size,bool preserve keys false array將乙個陣列分隔成多個陣列,其中每個陣列的單元數目有size決定。最後乙個陣列的單元資料可能會少於size個。引數 array 需要...