裸机系统上电时第一个执行的是启动文件里由汇编编写的复位函数Reset_Handler,复位函数最后会调用 C 库函数__main,__main 函数的主要工作是初始化系统的堆和栈,最后调用 C 中的 main 函数。如下图所示:
1、创建任务
在 main()函数中,我们直接可以对 FreeRTOS 进行创建任务操作,因为 FreeRTOS 会自动帮我们做初始化事情,比如初始化堆内存。我们在 main()函数中直接初始化板级外设——BSP_Init(),然后进行使用xTaskCreate()函数创建任务即可, 在任务创建中,FreeRTOS 会帮我们进行系统初始化和堆内存初始化。
xTaskCreate()函数内部进行堆内存初始化如下所示:
程序说明如下:
(1)(2)、在未初始化内存的时候一旦调用了 xTaskCreate()函数,FreeRTOS 就会帮我们自动进行内存的初始化,内存的初始化,代码如下所示。注意,此函数是 FreeRTOS 内部调用的,目前我们暂时不用管这个函数的实现在后面我们会仔细讲解 FreeRTOS 的内存管理相关知识,现在我们知道 FreeRTOS 会帮我们初始化系统要用的东西即可。