如何快速移植FreeRtos到stm32上(小白可入)

最近准备毕设想要用freertos,就在B站上找到了一位up主的视频,也移植成功了,我将视频内容整理了一下,希望能帮到大家

1.准备工作

1.1 准备好stm32工程(格式不一样也没关系)

1.2 准备好FreeRtos源文件

freertos官网网址

点击下载,选择一个版本下载,我选的第二个,(如果官网进不去就从github下载)

1.3 准备好的内容

2.修改stm工程目录

2.1 在stm工程目录中新建freertos目录

2.2 在freertos目录中添加src,inc,port三个目录

src(存放freertos中的源码)inc(存放freertos中的头文件)port(存放与硬件平台相关的文件)

2.3 将freertos中的source源文件移动到stm32工程中

2.4 仿照上述方法,将include文件夹中的.h文件移动到对应的文件夹

2.5 在freertos源代码中portable中有很多目录,我们只需要MemMang和RVDS这两个目录,(我已经将freertos源代码裁剪过了)

2.6  将这两个文件夹中的文件或者子文件拷贝到port文件夹中

注意:RVDS文件夹有各种子文件夹,根据名字可知,这些子文件夹都是对应的芯片内核型号,比如我用的是stm32F103Zet6,内核用的是M3,所以我需要将这个ARM_CM3中的文件拷贝到port中,所以,根据自己的内核芯片型号拷贝对应的文件

2.7 最后一步,将freertosconfig.h添加到freertos根目录下

3 配置工程

3.1 进入stm32工程,创建分组,将文件添加进去

3.2 添加文件目录

3.3 在freertosconfig.h文件中添加以下三个宏定义

#define xPortPendSVHandler PendSV_Handler

#define vPortSVCHandler SVC_Handler

#define xPortSysTickHandler SysTick_Handler

注意:如果工程后期编译出现.\Objects\Template.axf: Error: L6218E: Undefined symbol xTaskGetCurrentTaskHandle (referred from stream_buffer.o).就添加第四个宏定义

这类报错一般是因为某个函数要运行之前需要打开某个宏定义开关

3.4 在stm32f1xx_it.c中需要注释掉框框里面的中断服务函数(rtos中已经为我们准备了这些函数)

3.5 开始编译运行,没有报错就说明移植完成

4. 开始测试,编写一个led亮灭的功能来测试

我的测试成功,快去试试吧

作者:m0_65558061

物联沃分享整理
物联沃-IOTWORD物联网 » 如何快速移植FreeRtos到stm32上(小白可入)

发表回复