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 小时前
单片机基础核心知识点汇总(十七)
单片机·嵌入式硬件
我不管我就要叫小猪3 小时前
STM32——SPI
stm32·单片机·嵌入式硬件
Ryan.F3 小时前
电容(capacitance)
单片机·嵌入式硬件
捷瑞电子工坊4 小时前
深入理解CMSIS内核函数:__disable_irq() 与 __enable_irq()
stm32·嵌入式系统·cmsis·中断控制·临界区保护
夜月yeyue4 小时前
SOME/IP 服务模型
linux·服务器·单片机·安全·车载系统
夜月yeyue4 小时前
SOME/IP-SD 服务发现故障
网络·单片机·网络协议·tcp/ip·安全·服务发现
LCG元5 小时前
【实战】STM32 从零实现 Modbus RTU 从站:寄存器映射、CRC 校验与串口中断解析
stm32·单片机·嵌入式硬件
尼喃5 小时前
PW1555平芯微代理商,DFN3X3-10封装耐受30V浪涌非持续工作
嵌入式硬件
云泽8085 小时前
深入浅出 STM32(十九):从寄存器原理到 volatile 避坑实战
stm32·单片机·嵌入式硬件
恒锐丰小瑞6 小时前
率能SS6623E 20V/4.3A/单通道直流电机驱动IC,低导通电阻(110mΩ)与多重保护,用于电子锁/玩具/机器人
单片机·嵌入式硬件·机器人