Я пытаюсь понять рабочий процесс простой 2 задачи на freeRTOS. Добавление псевдо-код для ясности,Переключатель начального контекста FreeRTOS
Task_A
void Task_A(void *pvParameters)
{
const char *pcTaskName = "Task_A is running\r\n";
for(;;)
{
vPrintString(pcTaskName);
/* Delay for a period. */
vTaskDelay(250/portTICK_RATE_MS);
}
}
Task_B
void Task_B(void *pvParameters)
{
const char *pcTaskName = "Task_B is running\r\n";
volatile unsigned long ul;
for(;;)
{
vPrintString(pcTaskName);
/* Delay for a period. */
vTaskDelay(250/portTICK_RATE_MS);
}
}
главный
int main(void)
{
xTaskCreate(Task_A, "Task 1", 1000, NULL, 1, NULL);
xTaskCreate(Task_B, "Task 2", 1000, NULL, 1, NULL);
/* Start the scheduler so the tasks start executing. */
vTaskStartScheduler();
for(;;);
}
Предполагая, что обе задачи, скажем, Task_A и Task_B создаются внутри основной функцией, предоставляется вызов планировщику (преуспевает при создании всех задач). Как выполнить вызов планировщика, если планировщик не вызывается перед созданием задач? Или просто просто, в то время как выполнение начинается с основного, что приводит к тому, что элемент управления выходит из Task_A и Task_B, чтобы позже запускался планировщик? Пожалуйста, поправьте меня, если мое понимание ошибочно.
Это совсем не ясно, что вы просите. Пожалуйста, отредактируйте вопрос, чтобы предоставить дополнительную информацию, возможно, добавив псевдокод, чтобы уточнить, где вы запутались. – Ross