FreeRTOS的启动流程

B站影视 2025-01-28 10:53 2

摘要:方式一:在main函数中创建所有任务。这种方式是先将硬件和RTOS系统初始化,然后创建所有的应用任务,最后启动RTOS调度器,开始多任务调度。这种方式的优点是简单直观,缺点是如果任务过多,可能会导致main函数过长和复杂。方式二:在main函数中创建启动任务,

FreeRTOS系统启动流程是指FreeRTOS操作系统从上电到开始多任务调度的过程。FreeRTOS有两种比较流行的启动方式,分别是:

方式一:在main函数中创建所有任务。这种方式是先将硬件和RTOS系统初始化,然后创建所有的应用任务,最后启动RTOS调度器,开始多任务调度。这种方式的优点是简单直观,缺点是如果任务过多,可能会导致main函数过长和复杂。方式二:在main函数中创建启动任务,在启动任务中创建应用任务。这种方式是先将硬件和RTOS系统初始化,然后创建一个启动任务,再启动RTOS调度器;在启动任务中创建各种应用任务,当所有任务创建完成后,启动任务会将自己删除。这种方式的优点是可以分步创建任务,避免main函数过长和复杂,缺点是需要额外创建一个启动任务。

具体来说,FreeRTOS的启动流程可以分为以下几个步骤:

步骤一:上电后执行复位函数Reset_Handler。这个函数是由汇编编写的,它会调用SystemInit函数进行硬件初始化,然后调用__main函数进入C库函数。步骤二:__main函数进行堆和栈的初始化,然后调用C中的main函数。步骤三:main函数进行RTOS系统初始化,包括全局变量的初始化,空闲任务的创建等。然后根据不同的启动方式,创建一个或多个应用任务,并返回一个任务句柄用于后续操作。步骤四:main函数调用vTaskStartScheduler函数启动RTOS调度器。这个函数会开启定时器中断,并从就绪态的任务中选择一个优先级最高的任务开始执行。步骤五:如果采用方式二,则在启动任务中继续创建其他应用任务,并在完成后删除自己。如果采用方式一,则直接进入各个应用任务的循环体。

来源:自由坦荡的湖泊AI

相关推荐