STM32/STM32_RTOS

FreeRTOS-undefined reference to `vTaskList'에러

원원 2023. 4. 2. 12:56

안녕하세요. 오늘은 FreeRTOS의 vTaskList함수를 사용하려할때 발생하는 undefined reference to `vTaskList' 에러에 대해 알아보겠습니다.

vTaskList함수를 사용하려면 vTaskList함수를 사용할수있게 매크로를 설정해야합니다.
FreeRTOS.h에 있는 configUSE_TRACE_FACILITY와 configUSE_STATS_FORMATTING_FUNCTIONS을 1로 설정하면 됩니다. (https://www.freertos.org/a00021.html)

* vTaskList함수 사용할수있게 설정

#define configUSE_STATS_FORMATTING_FUNCTIONS 1
#define configUSE_TRACE_FACILITY 1

 

* 태스크생성

    if (xTaskCreate(task1, "TASK1", 300, NULL, 1, NULL) != pdPASS)
    {
        PRINTF("Task1 creation failed!.\r\n");
        while (1)
            ;
    }

    if (xTaskCreate(task2, "TASK2", 400, NULL, 2, NULL) != pdPASS)
    {
        PRINTF("Task2 creation failed!.\r\n");
        while (1)
            ;
    }
    if (xTaskCreate(task3, "TASK3", 500, NULL, 3, NULL) != pdPASS)
    {
        PRINTF("Task3 creation failed!.\r\n");
        while (1)
            ;
    }

 

*테스크함수
static void task1(void *pvParameters)
{
    char taskList[500];
    for (;;)
    {
    	vTaskList(taskList);
        PRINTF("TASK1\r\n");
        PRINTF(taskList);
        vTaskDelay(pdMS_TO_TICKS(2000));
    }
}
static void task2(void *pvParameters)
{
    for (;;)
    {
        vTaskDelay(pdMS_TO_TICKS(2100));
    }
}
static void task3(void *pvParameters)
{
    for (;;)
    {
        vTaskDelay(pdMS_TO_TICKS(2200));
    }
}


*출력결과

TASK1
TASK1              	X	1	28	1
IDLE               	R	0	237	4
TASK3              	B	3	403	3
TASK2              	B	2	303	2
Tmr Svc            	B	4	470	5

이름/ 상태/ 우선순위/ 테스크스택/ 고유ID 순서입니다.

상태로는 B(Blocked), R(Ready), D(Deleted), S(Suspended or Blocked without a timeout)이 있습니다.