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

相关推荐
创界工坊工作室18 分钟前
35-基于AT89C51单片机的罐头生产线传送系统设计
stm32·单片机·嵌入式硬件·51单片机·proteus·生产线
qq_4017004140 分钟前
MCU串口接收不定长数据的三种方案,哪种最稳?
stm32·单片机·嵌入式硬件
inrichtt1 小时前
第七课时:STM32时钟系统揭秘:从零理解时钟树
c语言·数据结构·stm32·单片机·嵌入式硬件
硅基手札2 小时前
【Linux 内核专栏 17】进程间通信 IPC(上)— 管道·信号·System V IPC·mmap·文件锁
linux·运维·服务器·stm32·单片机·mcu
Zw-awa2 小时前
PID 用顺了,然后呢:增强手术与前馈
stm32
国科安芯2 小时前
无方向脚如何既快又稳:ASC0101S 自动方向感应机理与边沿加速应用研究
网络·嵌入式硬件·低轨卫星·商业航天·抗辐射
额额额对了2 小时前
Linux 驱动开发:基于 platform 总线 + misc 设备的 DS18B20 单总线温度驱动
linux·c语言·开发语言·驱动开发·嵌入式硬件
zcmodeltech3 小时前
沙盘模型控制系统STM32和PLC方案对比:选型逻辑与代码实现
stm32·嵌入式硬件·自动化
HQB20263 小时前
EG11731|屹晶微电子 100V 内置功率管大电流同步降压 DC‑DC
嵌入式硬件·硬件工程
2501_922639583 小时前
率能半导体 SS6209L半桥MOSFET驱动器:28V/4A集成方案,覆盖电子烟、无线充电、半桥应用三大场景
单片机·嵌入式硬件·硬件工程