一、开启任务调度器
vTaskStartScheduler( )
作用:用于启动任务调度器,任务调度器启用后,FreeRtos开始进行任务调度
1、创建空闲任务
2、如果使能软件定时器,则创建定时器任务
3、关闭中断,防止调度器开启之前或过程中,受中断干扰,会在运行第一个任务时发生中断
4、初始化全局变量,并将任务调度器的运行标志位置为已运行
5、初始化任务运行时间统计功能的时基定时器
6、调用函数xPortStartScheduler( )
xPortStartScheduler( )
作用:该函数用于完成启动任务调度器中与硬件架构相关的配置部分,以及启动第一个任务该函数的内部完成。
1、检测用户FreeRTOSConfig.h中对中断相关配置是否有误
2、配置PendSV和SysTick的中断优先级为最低优先级
3、调用函数vPortSetupTimerInterrupt( )配置SysTick
4、初始化临界区嵌套计数器为0
5、调用函数prvEnableVFP( )使能FPU
6、调用函数prvStartFirstTask( )启动第一个任务