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