目录
3.2拷贝FreeRTOSConfig.h文件到User文件
1准备工作
1.1获取STM32的裸机工程
这里选择最简单的用固件库点亮LED程序即可。裸机项目就是不包含操作系统的项目工程,随便找一个之前stm32开发使用的项目文件即可,这里以点亮 LED 的项目工程为例。

1.2下载FreeRTOS 源码
点击下载链接:FreeRTOS链接,进入FreeRTOS官网首页,点击“Download FreeRTOS”,选择 FreeRTOS 202112.00 进行下载。

2FreeRTOS文件夹内容简介
下载的 FreeRTOS 202112.00 文件夹大小约为80M左右,将其解压可以看到如下图所示的文件夹列表。

我们工程移植用到的是 FreeRTOS 文件夹中内容。

| 文件夹名称 | ||
3移植FreeRTOS到STM32
3.1提取FreeRTOS最简源码
FreeRTOS文件夹较大,内部很多东西,在单一工程中用不到,所以要进行选择。
1) 在LED项目工程中创建FreeRTOS文件夹,并创建src、port文件夹,inlucde文件夹可以直接从下载的FreeRTOS源码文件夹中Source文件夹下inlcude直接复制。

2)将图3-2中框选文件复制到src文件夹中。

3)在portable文件夹中,选择与Keil开发环境相关的文件RVDS, 其中Keil文件夹中已说明,RVDS和Keil一致;选择与内存管理相关的文件夹MemMang复制到新建的port文件中。

3.2拷贝FreeRTOSConfig.h文件到User文件
FreeRTOSConfig.h是FreeRTOS工程配置文件,用于不同的处理器平台,用户可以修改FreeRTOS内核配置文件来裁剪FreeRTOS的功能。

3.3添加FreeRTOS源码到工程分组
在工程中创建FreeRTOS/src和FreeRTS/port分组,并添加FreeRTOS的源码。在选择接口文件port.c是在RVDS中选择,这里以STM32F103为例,由于是Cotex-M3内核,所以选取Cotex-M3文件夹中的port.c文件;而内存管理文件选择 MeMang文件夹下heap4.c。

3.4指定FreeRTOS头文件的路径
添加FreeRTOS的头文件——inlcude和RVDS中ARM_CM3中的“.h”文件路径。

到目前为止,已经移植完毕,编译项目发现会报错,xTaskGetCurrentTaskHandle未定义,但是在task.c文件中可以找到该函数定义
Undefined symbol xTaskGetCurrentTaskHandle
, 看宏定义两个条件满足其一才会定义该函数,右击变量名,Go To Definition,发现两变量都宏定义为0。 将二者其一改为1 ,则可编译成功,之前利用野火提供的FreeRTOS v9.0源码并不报错,并且宏定义都是为0。有懂得大佬可以解答一下(这里做下标记,如果以后知道了,再进行修改)
