안녕하세요. 오늘은 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)이 있습니다.
'STM32 > STM32_RTOS' 카테고리의 다른 글
STM32 RTOS 알아보기 3편(xQueueSendFromISR,xQueueReceiveFromISR) (0) | 2024.10.04 |
---|---|
STM32 RTOS 알아보기 2편(xQueueCreate,xQueueSend,xQueueReceive) (0) | 2024.08.18 |
STM32 RTOS 알아보기 1편(xTaskCreate, vTaskDelay, vTaskDelayUntil) (0) | 2024.08.11 |