一.任务相关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中有定义