我試圖理解freeRTOS上的簡單2任務模型的工作流程。添加了清晰的僞代碼,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在主函數中創建一個調用調度程序給出(成功完成所有任務)。如果調度程序在創建任務之前未被調用,那麼將如何執行對調度程序的調用?或者簡單地說,當執行從main開始時,是什麼導致控制從Task_A和Task_B出來,以便稍後調用調度器?如果我的理解有缺陷,請糾正我。
我一點也不清楚你在問什麼。請編輯問題以提供更多信息,或許添加僞代碼以澄清您感到困惑的地方。 – Ross