FREErtos启动流程
时间: 2023-10-25 20:29:16 浏览: 102
在FreeRTOS的启动流程中,首先在main函数中进行硬件初始化、RTOS系统初始化,并创建所有的任务。然后,启动RTOS调度器,任务调度器会根据任务的优先级进行选择,开始多任务调度。在FreeRTOS系统上电后,会先调用复位函数Reset_Handle,然后调用C库函数__main,主要是为了初始化系统的堆和栈,最后调用C中的main函数。在main函数中,对硬件设备和系统进行初始化,然后创建任务。接下来,启动任务调度器,任务调度器是FreeRTOS实时操作系统的核心,负责任务切换。调度器会完成一些任务,如创建空闲任务、创建定时器服务任务、关闭中断,并将变量xSchedulerRunning设置为pdTRUE,表示调度器开始运行。然后,使用调度函数xPortStartScheduler()来初始化与调度器启动相关的硬件。接下来,使用函数prvStartFirstTask()来启动第一个任务,该函数主要用来使能中断,并使用SVC异常来启动第一个任务。最后,使用vPortSVCHandler()函数从第一个任务的进程栈中出栈。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [FreeRTOS的启动流程](https://blog.csdn.net/qq_42413161/article/details/130997035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [FreeRTOS任务启动流程实践](https://blog.csdn.net/Yoolell/article/details/123153113)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文