我试图使用vTaskList函数来监视正在使用的任务。为了使用vTaskList,我在下面配置宏。
#define configUSE_TRACE_FACILITY 1
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
以下是显示任务列表的任务代码。
void TASK_LIST()
{
signed char pWriteBuffer[2048];
for(;;)
{
vTaskList(pWriteBuffer);
printf("task_name task_state priority stack tasK_num\n");
printf("%s\n", pWriteBuffer);
}
vTaskDelete(NULL);
return;
}
但是,错误只显示未定义的引用
是什么导致了这个错误
谢谢。
PS。对于我的原始情况,FreeRTOSConfig.h中的configUSE_STATS_FORMATTING_FUNCTIONS没有宏。所以我手动添加它。
它从代码源看起来,因为它依赖于FreeRTOS内核版本......
我检查了几个特定版本的演示应用程序,例如: this one,也是tasks.c的代码源。它应该足以设置你提到的那两个宏。因此,链接错误的实际原因看起来与配置本身无关。检查配置更改后是否重建了tasks.c源文件(如果没有,则无法正确处理项目中的依赖项)。仔细检查那些定义是真正的“1” - 数字(不是“l”(小“L”字母)或“I”(大写“I”字母),根据使用的字体,可以很容易地与“1”混淆)。
UPDATE
由于您使用的是Eclipse IDE,请查看此official guidance of how to setup project。 Here你可以为你的FreeRTOS版本找到Eclipse的演示项目,特别是检查Makefile,我猜你的自动生成的Makefile缺少如下行:
$(RTOS_SOURCE_DIR)/tasks.c \
PS
对于v9.0.0来说,它应该足以像你一样启用配置。但v10.0.0还依赖于configSUPPORT_DYNAMIC_ALLOCATION:如果在项目的FreeRTOSConfig.h中它被定义为默认值(“1”)以外的东西 - 将排除vTaskList。但是,在include头文件task.h和online documentation中都没有提到这种依赖关系。