一.任務相關API
vTaskList(),創建一個表格描述每個任務的詳細信息
? ?char biaoge[1000];? ? ?//定義一個緩存
? ?vTaskList(biaoge);? ? //將表格存到這緩存中
? ?printf("%s /r/n",biaoge);
1.uxTaskPriorityGet()獲取任務優先級
此函數用來獲取指定任務的優先級,要用此函數的話宏 INCLUDE_uxTaskPriorityGet應該定義為1.
函數原型
UBaseType_t?uxTaskPriorityGet(TaskHandle_t xTask)? 在task.c中
參數
xTask : 要查找的任務的任務句柄
返回值 :獲取到的對應的任務優先級 ,要去查看參數的類型,用其來定義返回值
2.vTaskPrioritySet() 改變任務優先級
此函數用于該改變某一個任務優先級,要使用此函數的話宏INCLUDE_uxTaskPrioritySet應該定義為1,函數原型如下
void?vTaskPrioritySet(TaskHandle_t xTask,UBase Type_t uxNewpriority)
xTask:要查找的任務的任務句柄
uxNewpriority:任務要使用的新的優先級,可以是0~configMAX_PRIORITIES-1。
3.uxTASkGetsystemState()??獲取系統中所有任務的任務壯態
? ? ? ? 此函數用于獲取系統中所有任務的任務壯態,每個任務的壯態信息保存在一個 TaskStatus_t類型的結構體里面,這個結構體里面包含了任務的任務句柄、任務名字、堆棧、優先級等信息,要使用此函數的話宏 configUSE_TRACE_FACILITY.應該定義力1
函數原型如下:
UBase Type_t ux TaskGetSystemState( TaskStatus 1 * const? ? ? px TaskStatusArray,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?const UBaseType_t? ? ? ux Array Size,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?uint32_1 * const? ? ? ? ? ? pulTotalRun Time )
參數:
pxTaskStatusArray: 指向 TaskStatus_1結構體類型的數組首地址,每個任務至少需要一個TaskStatus_t?結構體,任務的數量可以使用的數uxTaskGetNumberOfTasks()。
結構體 TaskStatus_t 在文件task.h中有如下定義:
typedef struct TASK_ STATUS
{
? ? ? ?TaskHandle 1? ? ?xHandle;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //任務句柄
? ? ? ?const char *? ? ? ??pc TaskName;? ? ? ? ? ? ? ? ? ? ? ?//任務名字
? ? ? ?UBase Type t? ? ?x TaskNumber;? ? ? ? ? ? ? ? ? ? ? //任務編號 ?
? ? ? ?eTaskState? ? ? ? ?eCurrentState;? ? ? ? ? ? ? ? ? ? ? //當前任務壯態,cTaskState 是一個枚舉類型
? ? ? ?UBase Type_t? ? ?uxCurrentPriority;? ? ? ? ? ? ? //任務當前的優先級
? ? ? ?UBase Type_t? ? ?uxBasePriority;? ? ? ? ? ? ? ? ? ? //任務基礎優先級
? ? ? ?uint32_1? ? ? ? ? ? ?ulRunTimeCounter,? ? ? ? ? ? ? //任務運行的總時間
? ? ? ?StackType 1 *? ? ?pxStackBase;? ? ? ? ? ? ? ? ? ? ? ?//堆棧基地址
? ? ? ?uint 16_t? ? ? ??? ? usStackHigh WaterMark;? ? ? //從任務創建以來任務堆找剩余的最小大小,此
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 值如果太小的話說明堆找有溢出的風險。
) TaskStatus_t;
uxArraySize:保存任務壯態數組的數組的大小。
?
4.vTaskGetInfo()獲取指定任務的狀態
5.xTaskGetApplication Task Tag()用于獲取任務Tag值
6.xTaskGetCurrentTaskHandle()獲取當前任務的任務句柄
7.xTaskGetHandle()根據任務文字獲取任務的任務句柄
在使用函數下TaskCreate()或xTaskCreateStatic()創建任務的時候都會給任務分配一個任務名,.xTaskGetHandle()函數就是根據這個任務名來查詢其對應得任務句柄。
要使用此函數的話宏 INCLUDE_xTaskGetHandle 應該定義力1
函數原型如下:
?TakeHandle_T xTaskGetHandle( const char*? pcNameQuery)
參數
pcNameToQuery:? ? 任務名,C語言字符串。
要把這個函數獲得句柄就要定義一個和定義這個函數一樣的類型數
寫好獲取句柄的函數和打印函數?? ?
?Taskhandle = xTaskGetHandle("query_task");??query_task要查詢的任務的任務名,這個函數的參數是指針類型,所以要用字符串
發現兩個獲取的句柄一樣,函數使用正確
8.xTaskGetIdleTaskHandle() 用于返回空閑任務的任務句柄,要使用此函數的話對應宏要為1
9.uxTaskGetStackHighWaterMark()用于查詢任務從創建好到現在的歷史剩余最小值,這個值越小說明任務堆棧溢出的可能性就越大!
FreeRTOS 把這個歷史剩余最小值叫做“高水位線”。此函數相對來說會多耗費一點時間,所以在代碼調試階段可以使用,產品發布的時候最好不要使用。要使用此函數的話宏? ?INCLUDE_uxTaskGetStackHigh WaterMark 必須為1,此函數原型:下:
?UBase Type_t ux TaskGetStackHighWaterMark( TaskHandle_t xTask)
參數:
xTask:要查詢的任務的任務句柄,當這個參數為 NULL 的話說明查詢自身任務(即調用函數 ux TaskGetStackHlighWaterMark0的任務)的“高水位線”。
返回值:任務堆棧的“高水位線”值,也就是堆棧的歷史剩余最小值。
定義的大小為200,剩余146,說明用了54個。
? 10.eTaskGetState()此函數用于查詢某個任務的運行壯態
比如:運行態、阻塞態、掛起態、就緒態等,返回值是個枚舉類型。要使用此函數的話宏 INCLUDE_cTaskGietStale 必須為1,函數原型如下,
eTaskState? ? eTaskGetState( TaskHandle_t? xTask)
xTask:要查詢的任務的任務句柄
返回值:返回值eTaskState的類型,這個是個枚舉類型,在文件task.h中有定義