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

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

运行结果如下

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

cpp 复制代码
void vTaskList( signed char *pcWriteBuffer );

操作步骤

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

cpp 复制代码
static signed char pcWriteBuffer[200];

二、保证如下条件成立

cpp 复制代码
#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 )改成如下代码,代码在空闲任务内调用及打印结果。

cpp 复制代码
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

相关推荐
疏星浅月2 小时前
虚拟内存三大核心作用详解
linux·c语言·arm开发·嵌入式硬件
Aaron15886 小时前
RFSOC+VU13P+RK3588的核心优势与应用场景分析
嵌入式硬件·算法·matlab·fpga开发·信息与通信·信号处理·基带工程
blevoice6 小时前
JL杰理AC696N开发板常见问题FAQ-问题6:为什么提示“key 不匹配”?杰理的蓝牙芯片的key是什么?以及该如何添加key? 杰理key文件原理?
单片机·嵌入式硬件·物联网·jl杰理蓝牙音频芯片·ac696n·蓝牙音箱方案开发
编程之升级打怪6 小时前
常见电路的引脚代号
嵌入式硬件
三佛科技-187366133978 小时前
辉芒微FT62FC1x低成本小体积定时器触摸MCU芯片选型深度解析
单片机·嵌入式硬件
独小乐8 小时前
018.使用I2C总线EEPROM|千篇笔记实现嵌入式全栈/裸机篇
linux·笔记·单片机·嵌入式硬件·arm·信息与通信
C^h8 小时前
rtthread控制达妙4310电机
数据库·单片机·嵌入式硬件
三佛科技-187366133979 小时前
LP3717BSL 12V1A隔离型极简化自供电充电器适配器电源方案测试报告
单片机·嵌入式硬件
一路往蓝-Anbo9 小时前
第二章:STM32 bxCAN 控制器详解:从内存到总线的“中转站”
stm32·单片机·嵌入式硬件·软件工程
jucat10 小时前
定时排气扇
嵌入式硬件