【FreeRTOS】5.STM32移植-任务信息查询和信息统计

这篇博客介绍了FreeRTOS中任务管理的相关API,包括查询和设置任务优先级、获取任务个数、任务状态信息以及系统运行时间。还提到了如何获取任务的运行状态、任务句柄、堆栈使用情况和任务调度器的状态。此外,vTaskList函数用于生成任务详细信息的表格,便于调试和监控。
摘要由CSDN通过智能技术生成

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: 保存任务壮态信息表的存储区。 存储区要足够大来保存任务状态信息表。
返回值: 无

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值