basetype_t xtaskcreate( taskfunction_t pxtaskcode, //①任務實現函式指標(函式名)
const char * const pcname, //②任務名稱,用於追蹤除錯,名字長度不超過configmax_name_len
const uint16_t usstackdepth, //③任務堆疊大小,是usstackdepth的4倍
void * const pvparameters, //④傳遞給任務函式的引數
ubasetype_t uxpriority, //⑤任務優先順序,範圍0~configmax_stack_size.
taskhandle_t * const pxcreatedtask )//⑥控制代碼,任務建立成功後會返回任務控制代碼,是任務的任務堆疊。
返回值:
pdpass:建立任務成功
errcould_not_allocate_required_memory:因記憶體不足,任務建立失敗。
任務控制代碼:實際上是乙個void * 的指標,他指向的位址是任務控制塊tcb
注意:configsupport_dynamic_allocation 必須置為1
taskhandle_t xtaskcreatestatic( taskfunction_t pxtaskcode, //①任務實現函式指標(函式名)
const char * const pcname, //②任務名稱,用於追蹤除錯,名字長度不超過configmax_name_len
const uint32_t ulstackdepth, //③任務堆疊大小,靜態建立任務,任務堆疊需要使用者給出,一般是個數 組,此引數是這個陣列的大小
void * const pvparameters, //④任務傳入引數
ubasetype_t uxpriority, //⑤任務優先順序
stacktype_t * const puxstackbuffer,//⑥任務堆疊指標
statictask_t * const pxtaskbuffer )//⑦任務控制塊指標
返回值:
null:建立任務失敗
其他值:任務建立成功,返回值是任務控制代碼
函式原型:void vtaskdelete( taskhandle_t xtasktodelete )
引數:xtasktodelete :要刪除的任務控制代碼
返回值:無
任務的靜態分配,需要手動定義棧空間和任務控制塊tcb的空間,將他們的指標傳到函式裡面
注意:configsupport_static_allocation 必須置為1
```c
//任務優先順序
#define start_task_prio 1
//任務堆疊大小
#define start_stk_size 128
//任務控制代碼
taskhandle_t starttask_handler;
//任務函式
void start_task(void *pvparameters)
;//任務優先順序
#define led0_task_prio 2
//任務堆疊大小
#define led0_stk_size 50
//任務控制代碼
taskhandle_t led0task_handler;
//任務函式
void led0_task(void *pvparameters)
;//任務優先順序
#define led1_task_prio 3
//任務堆疊大小
#define led1_stk_size 50
//任務控制代碼
taskhandle_t led1task_handler;
//任務函式
void led1_task(void *pvparameters)
;
//開始任務任務函式——動態方法
void
start_task
(void
*pvparameters)
/*開始任務任務函式——靜態方法*/
/*void start_task(void *pvparameters)
*///led0任務函式
void
led0_task
(void
*pvparameters)
}//led1任務函式
void
led1_task
(void
*pvparameters)
}
int
main
(void
)
函式原型:void vtasksuspend( taskhandle_t xtasktosuspend )
引數:xtasktosuspend ——要掛起任務的任務控制代碼,當傳入null時,掛起任務自己
返回值:無
函式原型:void vtaskresume( taskhandle_t xtasktoresume )
引數:xtasktoresume ——要恢復任務的任務控制代碼
返回值:無
注意:只能在正在執行的任務中排程,在排程器未開啟之前不能使用。
4 FreeRTOS任務的相關API函式
目錄 1 任務建立和刪除api函式 1.1 任務建立 1.1.1 動態建立 1.1.2 靜態建立 1.2 任務刪除 1.3 動態建立與刪除 實現 1.4 靜態建立與刪除 實現 2 任務掛起和恢復 api 函式 2.1 任務掛起 2.2 任務恢復 2.3 中斷恢復 注意 這裡我只是簡單地介紹freer...
FreeRTOS任務通知API函式
要使用任務通知,就要將巨集configuse task notifications置1 在freertos.h檔案768行 傳送任務通知xtasknotify,此函式傳送任務通知的時候帶有通知值 basetypep t xtasknotify taskhandle t xtasktonotify,任...
FreeRTOS學習(五) 任務相關API函式
宣告及感謝 跟隨正點原子資料學習,在此作為學習的記錄和總結 環境 keil stm32f103 api函式預覽 1.ubasetype t uxtaskpriorityget taskhandle t xtask 獲取某個任務的優先順序 引數 xtask 傳入任務控制代碼 unsigned port...