STM32标准库移植FREERTOS
1.获取FreeRTOS源码
我是从正点原子获取的源码-版本是202112.00
大家也可以从官网下载:https://www.freertos.org/
2.准备工程文件
在工程文件中创建专门的FreeRTOS文件夹

- inc:用于保存保存 FreeRTOS 中的头文件,也就是我们常说的‘.h 文件’
- port:用于保存内存管理以及处理器架构相关代码
- scr:保存 FreeRTOS 中的核心源文件,也就是我们常说的‘.c 文件’
3.移植需要的文件---inc头文件

将Source-include中的所有头文件复制到inc中(除了stdint.readme文件)

4.移植需要的文件---scr头文件
将Source中的核心源文件复制掉scr中


4.移植需要的文件---FreeRTOSconfig.h头文件
在Demo文件中找到对应芯片和平台的文件夹,将FreeRTOSConfig.h复制到工程文件FreeRTOS下面

FreeRTOSConfig.h:v>
4.移植需要的文件---port文件
从portable-MenMang复制内存管理文件

heap_1到heap_5根据需求选择一个就可,每个.C里面都有重复定义,导入工程文件编译时会显示重复定义

再从portable-RVDS中复制不同架构在不同平台的移植文件
使用的是F103系列属于ARM_CM3架构,在Keil平台开发。

点开KEIL文件夹,告知我们和RVDS一样,所有我们直接去复制RVDS内容到工程中的port文件夹
最终FrerRTOS文件夹内容如下:



5.在KEIL工程文件中导入---记得头文件位置也要导入

6.修改配置
首先在FreeRTOSConfig.h中三个宏定义

然后在stm32f10x_it.c中将这三个注释掉

7.验证移植是否成功
先加入头文件
#include "FreeRTOS.h" #include "task.h" #include "queue.h"
写一个LED翻转任务:
TaskHandle_t myTaskHandler; void myTask(void *arg) { while(1) { GPIO_SetBits(GPIOD,GPIO_Pin_2); vTaskDelay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_2); vTaskDelay(500); } }
主函数:
TaskHandle_t myTaskHandler; void myTask(void *arg) { while(1) { GPIO_SetBits(GPIOD,GPIO_Pin_2); vTaskDelay(500); GPIO_ResetBits(GPIOD,GPIO_Pin_2); vTaskDelay(500); } }
使用Keil仿真查看端口电平变化

看到电平翻转表示任务执行成功
具体视频讲解:可以看看b站up主Sliuam
我也是跟着Sliuam步骤移植的
浙公网安备 33010602011771号