一、前言
TaskList()是FreeRTOS中的一个函数,它可以列出所有当前正在运行的任务。这个函数可以用于调试和监视系统中的任务。它返回一个指向任务列表的指针,其中包含每个任务的名称、状态、优先级和堆栈使用情况等信息。
二、函数介绍
该函数的输入参数为数据缓存区的地址,可输出格式化的数据:
Name -任务名字
State -任务状态
“X”表示任务正在运行executing
“B”表示任务处于堵塞态
“R”表示任务处于就绪态
“S”表示任务被挂起
“D”表示任务已经被删除
Priority -任务优先度
Stack -任务剩余可用堆栈大小,越接近零,任务就越接近溢出堆栈
Num -任务的唯一数字编号
三、示例测试
#include <stdio.h>
#include "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "driver/gpio.h"
#define LED1_IO 12
#define LED1_IO_PIN (1ULL << 12)
void blinke_slow(void *pvparam)
{
while (1)
{
gpio_set_level(LED1_IO, 1); // 高低电平
printf("靓仔\n");
vTaskDelay(1000 / portTICK_PERIOD_MS); // 延时
gpio_set_level(LED1_IO, 0); // 高低电平
vTaskDelay(1000 / portTICK_PERIOD_MS); // 延时
}
}
void blinke_fast(void *pvparam)
{
while (1)
{
gpio_set_level(LED1_IO, 1); // 高低电平
printf("叼毛\n");
vTaskDelay(1000 / portTICK_PERIOD_MS); // 延时
gpio_set_level(LED1_IO, 0); // 高低电平
vTaskDelay(1000 / portTICK_PERIOD_MS); // 延时
vTaskSuspend(NULL); // 挂起函数
}
}
void app_main(void)
{
gpio_config_t LED_cof;
// 设置配置IO为12
LED_cof.pin_bit_mask = LED1_IO_PIN;
// 设置为输出模式
LED_cof.mode = GPIO_MODE_OUTPUT;
// 禁止上拉
LED_cof.pull_up_en = 0;
// 禁止下拉
LED_cof.pull_down_en = 0;
// 禁用中断
LED_cof.intr_type = 0;
// 将配置写入
gpio_config(&LED_cof);
TaskHandle_t xHandle = NULL;
xTaskCreate(blinke_slow, "mytask1", 4096, NULL, 1, &xHandle);
xTaskCreate(blinke_fast, "mytask2", 4096, NULL, 1, NULL);
static char pcWriteBuffer[512] = {0};
vTaskList(pcWriteBuffer);
printf("-----------------------------------\n");
printf("name state priority stack num\n");
printf("%s\n", pcWriteBuffer);
}
测试结果:
THE END!
标签:Task,函数,Freertos,05,FreeRTOS,任务,堆栈,freertos,include From: https://www.cnblogs.com/seekwhale13/p/17507475.html