【FreeRTOS(四)】显示任务详细信息

本文档介绍了如何利用vTaskList函数获取FreeRTOS操作系统的任务详细信息,包括任务状态、优先级和堆栈使用情况,以帮助优化内存管理和解决栈溢出问题。在使用该功能前,需要在FreeRTOSConfig.h中开启特定配置,并在ESP32或ESP8266上启用相关选项。示例代码展示了如何创建任务并调用vTaskList函数打印任务列表。
摘要由CSDN通过智能技术生成

显示任务详细信息 vTaskList

通过 vTaskList来协助分析操作系统当前 task 状态,以帮助优化内存,帮助定位栈溢出问题。

void vTaskList( char *pcWriteBuffer );
parameterdescription
pcWriteBuffer保存任务状态信息表的存储区,须足够大
return

pcWriteBuffe表中信息

  • Name:创建任务的时候给任务分配的名字
  • State:任务的状态信息,X:运行态,B:阻塞态,R:就绪态,S:挂起态,D:删除态
  • Priority:任务优先级
  • Stack:任务堆栈的“高水位线”,就是堆栈历史最小剩余值
  • Num:任务编号,这个编号是唯一的;当多个任务使用同一个任务名的时候;可以通过编号来区分
    在这里插入图片描述

注意事项:

  • 在使用vTaskList前需要在FreeRTOSConfig.h文件中打开configUSE_TRACE_FACILITYconfigUSE_TRACE_FACILITY

  • 如使用ESP32、ESP8266,需使能Enable FreeRTOS trace facilityEnable FreeRTOS stats formatting functions

    • make menuconfig -> Component config -> FreeRTOS -> Enable FreeRTOS trace facility
    • make menuconfig -> Component config -> FreeRTOS -> Enable FreeRTOS trace facility -> Enable FreeRTOS stats formatting functions

    通过上面配置,等同于使能 FreeRTOSConfig.h 中如下两个宏:
    configUSE_TRACE_FACILITY 和 configUSE_STATS_FORMATTING_FUNCTIONS

代码示例

#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"

void task1(void *pvParam)
{
    while (1)
    {
        printf("task1!\n");
        vTaskDelay(3000 / portTICK_PERIOD_MS);

        vTaskDelete(NULL);
    }
}

void task2(void *pvParam)
{
    while (1)
    {
        printf("task2!\n");
        vTaskDelay(3000 / portTICK_PERIOD_MS);

        vTaskDelete(NULL);
    }
}

void app_main(void)
{
    xTaskCreate(task1, "task1", 4096, NULL, 1, NULL);
    xTaskCreate(task2, "task2", 4096, NULL, 1, NULL);

    static char pcWriteBuffer[512] = {0};
    vTaskList(pcWriteBuffer);

    printf("-----------------------------------------");
    printf("Name    State   Priority    Stack   Num\n");
    printf("%s\n",pcWriteBuffer);
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eiker_3169

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值