STM32 Hal库FreeRtos查看所有任务的内存栈信息使用情况剩余空间 仅需一个函数搞定 超简单

STM32F103 基于Hal库跑FreeRtos,查看所有任务的栈的信息,包括任务名,任务状态,任务优先级,空闲栈,任务号。

运行结果如下

只需要使用一个函数vTaskList :获得任务的统计信息,形式为可读的字符串。

void vTaskList( signed char *pcWriteBuffer );

操作步骤

一、连接串口后,在freertos.c里面定义一个全局变量,存在所有任务的栈的信息,注意,pcWriteBuffer必须足够大。

static signed char pcWriteBuffer[200];

二、保证如下条件成立

#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )

一般条件1和条件3是默认成立的,如果条件2的宏定义是0(#define configUSE_STATS_FORMATTING_FUNCTIONS     0),需要配置STM32CubeMX,将其

使能,如下图所示。 

三、使能钩子函数。 

四、重新生成代码,在void vApplicationIdleHook( void )改成如下代码,代码在空闲任务内调用及打印结果。 

void vApplicationIdleHook( void )
{
  
	int i;
	vTaskList(pcWriteBuffer);
	for (i = 0; i < 16; i++)
		printf("-");
	printf("\n\r");
	printf("%s\n\r", pcWriteBuffer);
}

五、运行结果

源码链接

备注运行环境

单片机:STM32F103c8tx

keil版本:5.32

STM32CubeMX版本:6.8.2

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-22 11:06:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-22 11:06:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-22 11:06:03       87 阅读
  4. Python语言-面向对象

    2024-01-22 11:06:03       96 阅读

热门阅读

  1. Spring Cloud Validation 使用正则表达式校验

    2024-01-22 11:06:03       55 阅读
  2. 正则表达式5分钟全解析

    2024-01-22 11:06:03       48 阅读
  3. SQL Server修改数据字段名的方法

    2024-01-22 11:06:03       58 阅读
  4. SQL笔记 -- 多版本并发控制(MVCC)

    2024-01-22 11:06:03       52 阅读
  5. Armv8-M的TrustZone技术解决的安全需求

    2024-01-22 11:06:03       69 阅读
  6. P2P DMA发展全景分析解读

    2024-01-22 11:06:03       55 阅读
  7. 【python学习】面向对象编程3

    2024-01-22 11:06:03       58 阅读
  8. LeetCode 每日一题 Day 47 - 50

    2024-01-22 11:06:03       57 阅读