一、下载Freertos源码
(1)浏览器输入以下网址进入Freertos官网
https://www.freertos.org/

(2)点击dowmload下载FreeRTOS源码。

(3)下载成功后进入FreeRTOS-LTS目录,这便是我们需要的Freertos源码。

二、准备一个GD32标准库工程
为了方便测试,本次利用GD32标准库的串口通信实验代码为准,复制整个文件夹到并重命名为01_Template


三、移植FreeRTOS
(1)在工程文件根目录下创建 Middlewares 文件夹,在 Middlewares 里面再创建一个叫 FreeRTOS 的文件夹。


(2)进入FreeRTOS源码根目录,点击进入 FreeRTOS 文件夹


(3)其中有很多文件,本次移植只需要 FreeRTOS-Kernel 里的内容,点击进入FreeRTOS-Kernel文件夹。


(4)按下 ctrl+A 复制所有文件,到我们创建的 Middlewares\FreeRTOS 文件下。

(5)其中 portable 文件夹下有好多文件夹,但是实际上我们只需要 MemMang 和 RVDS 文件夹,剩下的可以删除。

(6)打开keil,加入我们需要的c文件,首先创建两个组分别为 FreeRTOS_CORE 和 FreeRTOS_PORT。

(7)将c文件导入工程组文件夹
1、将 Middlewares\FreeRTOS 文件夹下的所有文件导入 FreeRTOS_CORE组,这些是FreeRTOS的核心代码。

2、将 Middlewares\FreeRTOS\portable 下的heap4导入 FreeRTOS_PORT组中,本文件夹主要定义了五个内存管理方案,可自行了解,一般情况下使用heap4就行了。

3、将 Middlewares\FreeRTOS\portable\RVDS\ARM_CM4F 下的Port导入FreeRTOS_PORT组, port.c 文件里面的内容是由 FreeRTOS 官方的技术人员为 Cortex-M4 内核的处理 器写的接口文件,里面核心的上下文切换代码是由汇编语言编写而成。

(8)移植完成后的工程目录如下,接着我们需要添加INCLUDE路径。

1、依次点击看,进入配置路径页面。

2、分别添加 Middlewares\FreeRTOS\include 路径和 Middlewares\FreeRTOS\portable\RVDS\ARM_CM4F 路径,添加完毕后可以看到。

(9)进行编译,不出意外是会出错的,因为没有 FreeRTOSConfig.h 文件。

四、完善工程
(1)首先,进入 FreeRTOS 源码根目录,可以看到 examples 文件夹。

(2)进入 Middlewares\FreeRTOS\examples\coverity 文件夹下,可以看到一个 FreeRTOSConfig.h 文件,将其复制下载放置在 user 目录下


(3)此时编译,会出现以下错误,只需要将 FreeRTOSConfig.h 文件中的 TICK_TYPE_WIDTH_64_BITS 改成 TICK_TYPE_WIDTH_32_BITS 或者 TICK_TYPE_WIDTH_16_BITS就可以了