API函数:
UBaseType_t uxTaskPriorityGet(TaskHandle xTask)
查询任务优先级
uxTaskPrioritySet(TaskHandle xTask)
设置任务优先级。供系统内核使用,用户避免通过此函数修改优先级。
uxGetNumberOfTask()
获取任务个数。
uxTaskGetSystemState()
获取系统中所有函数的任务状态,每个任务的状态信息保存在TaskState_t 类型的结构体里面。此结构体包含了任务句柄、任务名字、堆栈、优先级等信息。
UBaseType_t uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
const UBaseType_t uxArraySize,
uint32_t * const pulTotalRunTime )
任务状态信息结构体定义:
typedef struct xTASK_STATUS
{
TaskHandle_t xHandle; // 任务句柄
const char* pcTaskName; // 任务名
UBaseType_t xTaskNumber; // 任务的唯一编号(按照创建顺序)
eTaskState eCurrentState; // 当前状态
UBaseType_t uxCurrentPriority; // 任务当前优先级
UBaseType_t uxBasePriority; // 任务基础优先级
uint32_t ulRunTimeCounter; // 运行时间信息
StackType_t* pxStackBase; // 堆栈地址
uint16_t usStackHighWaterMark; // 高水位线,历史剩余最小值
} TaskStatus_t;
pulTotalRunTime保存系统运行时间。(configGENERATE_RUN_TIME_STATS == 1)
返回值:返回任务个数。
vTaskGetInfo()
获取任务运行状态。
xTaskGetApplicationTaskTag()
获取任务的 Tag(标签)值,任务控制块中有个成员变量 pxTaskTag 来保存任务的标签值。
xTaskGetCurrentTaskHandle()
当前任务的任务句柄。
xTaskGetHandle()
根据任务名字获取任务的任务句柄, 。
uxTaskGetStackHighWaterMark()
每个任务都有自己的堆栈,堆栈的总大小在创建任务的时候就确定了,此函数用于检查任务从创建好到现在的历史剩余最小值, 这个值越小说明任务堆栈溢出的可能性就越大!FreeRTOS 把这个历史剩余最小值叫做“高水位线”。此函数相对来说会多耗费一点时间,所以在 代 码 调 试 阶 段 可 以 使 用 , 产 品 发 布 的 时 候 最 好 不 要 使 用 。 要 使 用 此 函 数 的 话 宏INCLUDE_uxTaskGetStackHighWaterMark 必须为 1。
eTaskGetState()
此函数用于查询某个任务的运行壮态,比如:运行态、阻塞态、挂起态、就绪态等,返回
值是个枚举类型。
xTaskGetTickCount()或xTaskGetTickCountFromISR()
查询任务调度器从启动到现在时间计数器 xTickCount 的值。
xTaskGetSchedulerState()
此函数用于获取 FreeRTOS 的任务调度器运行情况:运行?关闭?还是挂起!
vTaskList()
创建一个表格来获取每个任务的详细信息 。
void vTaskList( char * pcWriteBuffer )
// 调用
char pcWriteBuffer[1024];
vTaskList(pcWriteBuffer);
printf("%s", pcWriteBuffer);
参数:
pcWriteBuffer: 保存任务壮态信息表的存储区。 存储区要足够大来保存任务状态信息表。
返回值: 无