【发布时间】:2017-03-25 07:26:42
【问题描述】:
我正在尝试理解 freeRTOS 上一个简单的 2 任务模型的工作流程。为了清楚起见,添加伪代码,
任务_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 );
}
}
任务_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 函数中创建的,那么会调用调度程序(成功创建所有任务)。如果在创建任务之前未调用调度程序,将如何执行对调度程序的调用?或者简单地说,当执行从 main 开始时,是什么导致控制从 Task_A 和 Task_B 出来,以便稍后调用调度程序?如果我的理解有缺陷,请纠正我。
【问题讨论】:
-
我根本不清楚你在问什么。请编辑问题以提供更多信息,也许添加伪代码以澄清您感到困惑的地方。
标签: operating-system kernel embedded scheduling freertos