【STM32 FreeRTOS】任务相关API

获取系统中任务的数量

UBaseType_t uxTaskGetNumberOfTasks( void );

**返回:**RTOS 内核当前正在管理的任务数。这包括所有准备就绪、阻塞和 挂起的任务。已删除但尚未被空闲任务释放的任务也将包含 在计数中。还包括空闲任务和定时器任务(如果已开软件定时器)。

获取任务历史剩余最小堆栈位

UBaseType_t uxTaskGetStackHighWaterMark
 ( TaskHandle_t xTask );

**返回:**返回的值是以字为单位的高水位标记(例如,在 32 位计算机上, 返回值为 1 表示有 4 个字节的堆栈未使用)。如果返回值为零, 则任务可能已溢出堆栈。如果返回值接近于零,则任务已接近堆栈溢出 。

这个函数主要用于调测任务堆栈大小的设置,建议该返回值与堆栈大小设置值差不多就行,也就是实际任务使用了一半的堆栈。

以表格的形式获取系统中任务的信息

configUSE_TRACE_FACILITY
configUSE_STATS_FORMATTING_FUNCTIONS

必须在 FreeRTOSConfig.h 中定义为 1,才可使用此函数。

void vTaskList( char *pcWriteBuffer );
  • pcWriteBuffer:上述详细信息将以 ASCII 形式写入的缓冲区。假设此缓冲区 的大小足以容纳生成的报告。大约为每个任务分配 40 字节的缓冲区就足够了。

pcWriteBuffer中内容为:

第一列:任务名称

第二列:任务状态信息。X:运行态,B:阻塞态,R:就绪态,S:挂起态,D:删除态

第三列:任务优先级

第四列:任务堆栈的高水位线,就是堆栈历史最小剩余值

第五列:任务编号,这个编号是唯一的,当任务名称相同的时候可以使用这个作区分

	  UBaseType_t task_num = uxTaskGetNumberOfTasks();
	  printf("task_num = %ld\r\n",task_num);

	  UBaseType_t stack_high_water= uxTaskGetStackHighWaterMark(NULL)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值