FreeRTOS任務相關API函式一

2021-10-21 02:36:27 字數 2738 閱讀 1882

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...