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

相关推荐
泛凡(Linyongui)7 小时前
一款基于LP4057芯片的单节 4.2V 锂电池线性充电管理电路,带电源路径自动切换功能
arm开发·单片机·py32
9稳8 小时前
基于PLC的生产线自动升降机设计
开发语言·网络·数据库·嵌入式硬件·plc
惶了个恐8 小时前
嵌入式硬件第五弹——ARM(2)
arm开发·嵌入式硬件
weixin_669545208 小时前
BC915E 5V/3.6A输入 两节升压充电IC,升压充电效率95%,输入最大支持18W,ESOP8 兼容IP2325
人工智能·单片机·嵌入式硬件·硬件工程·信息与通信
Heartache boy9 小时前
野火STM32_HAL库版课程笔记-空气、烟雾传感器公式换算
笔记·stm32·嵌入式硬件
玻璃杯中水9 小时前
硬件知识总结梳理-1(电阻+电容)
单片机·嵌入式硬件
yuan199979 小时前
STM32F407 TIM3正交编码器应用指南
stm32·单片机·嵌入式硬件
lin辰傍边的风10 小时前
RS485收发架构移植要点
stm32·单片机·嵌入式硬件
π同学11 小时前
基于CH343的一种自动烧录模式电路设计分析
单片机·嵌入式硬件·eps32
正点原子11 小时前
《DNESP32P4开发指南_V1.0》第十一章 LED实验
单片机·物联网·嵌入式