jeronimo479 wrote on Wednesday, March 21, 2018:
I’m using FreeRTOS v10.0.0 on an ARM M3 and heap_4.c.
From InitTask() with priority 5 I call:
result = xTaskCreate(
GPIO_BlinkTask, // task callback function
"BlinkTsk", // task nickname
configMINIMAL_STACK_SIZE, // stack size in words
NULL, // passed parameter
6, // task priority
NULL);
I expected that the call to xTaskCreate() would leave GPIO_BlinkTask() ready to run, and
therefore, FreeRTOS would switch to it, instead of retruning to InitTask(). I Looked through
xTaskCreate() and could not find any calls to the scheduler. This may or may not be a bug.
The FreeRTOS_Reference_Manual_v9.0.0 states: “Newly created tasks are initially placed in the Ready state, but will immediately become the Running state task if there are no higher priority tasks that are able to run.”
I expected that an RTOS will always have the highest task that is ready to run, running. Since
xTaskCreate() creates GPIO_BlinkTask() ready to run, why is it not immediately running?
I think I can solve this by calling vTaskDelay(0) just after xTaskCreate(GPIO_BlinkTask…)
Thanks,
Wayne