一,freeRTOS系统启动流程
在系统上电的时候第一个执行的是启动文件里面由汇编编写的复位函数Reset_Handler(芯片上电默认进Reset_Handler)。SystemInit初始化时钟及中断向量映射。复位函数的最后会调用 C 库函数__main。__main 函数的主要工做是初始化系统的堆和栈。main函数入口中将硬件初始化,RTOS 系统初始化,最后启动任务调度器。最后调用C中的main函数,从而进入 C语言程序。
int main (void)
{
/* 硬件初始化 */
HardWare_Init(); (1)
/* RTOS 系统初始化 */
RTOS_Init(); (2)
/* 建立任务 1,但任务 1 不会执行,由于调度器尚未开启 */ (3)
RTOS_TaskCreate(Task1);
/* 建立任务 2,但任务 2 不会执行,由于调度器尚未开启 */
RTOS_TaskCreate(Task2);
/* ......继续建立各类任务 */
/* 启动 RTOS,开始调度 */
RTOS_Start(); (4)
}
void Task1( void *arg ) (5)
{
while (1)
{
/* 任务实体,必须有阻塞的状况出现 */
}
}
void Task1( void *arg ) (6)
{
while (1)
{
/* 任务实体&