我正在尝试理解在freeRTOS上简单的两个任务模型的工作流程。为了更清晰,以下是伪代码:
任务A
Task_B (任务B)
主要的
假设任务A和任务B都在主函数中创建,调度程序的调用会被执行(在所有任务创建之后)。如果在任务创建之前没有调用调度程序,那么调用调度程序将如何执行?或者简单地说,当执行从主函数开始时,是什么导致控制权从任务A和任务B中退出,以便稍后调用调度程序?如果我理解有误,请纠正我。
任务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 (任务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( ;; );
}
假设任务A和任务B都在主函数中创建,调度程序的调用会被执行(在所有任务创建之后)。如果在任务创建之前没有调用调度程序,那么调用调度程序将如何执行?或者简单地说,当执行从主函数开始时,是什么导致控制权从任务A和任务B中退出,以便稍后调用调度程序?如果我理解有误,请纠正我。