初学STM32移植FreeRTOS遇到问题以及解决办法

目录

移植经历

最近尝试学习FreeRTOS移植,在这过程中碰到很多坑,也查了一些资料,简单总结这几天需要的问题以及经验。

下载方式

首先说下载,因为它的“源码”是免费的,可以直接到“https://www.freertos.org/”下载,如下图,会得到一个.exe的软件,通过软件将源码下载下来。
初学STM32移植FreeRTOS遇到问题以及解决办法
下载完成后如下图所示,主要看FreeRTOS下的代码。
初学STM32移植FreeRTOS遇到问题以及解决办法

keil下移植

因为本人用的是STM32F103ZET6,且使用keil软件,那么远也需要选用相同的文件。参考文档和使用代码都是正点原子的,参考文档为“STM32F1 FreeRTOS开发手册_V1.0.pdf”留下后文件如图
初学STM32移植FreeRTOS遇到问题以及解决办法
portable文件下载下来的时候有很多文件,删除后如图所示
初学STM32移植FreeRTOS遇到问题以及解决办法
这时候需要修改文件里的代码。

关于移植过程中出现的问题以及解决办法

引用的是正点原子代码点灯代码移植,在这其中遇到了的问题,算是对文档的补充吧,另外需要说明的是,有些步骤省略了,比如需要修改delay.c和sys.c代码等,只要是为了说明遇到问题,给予解决方式。
第一个问题 在自己尝试移植过程中,报错.Error: L6218E: Undefined symbol xTaskGetSchedulerState (referred from delay.o).解决如下图,其它类似错误可以来这个文件下找,尝试改。
初学STM32移植FreeRTOS遇到问题以及解决办法
第二个问题 在编译后没有出现错误但是灯不闪,debug仿真后跑到 STM32f10x_it.c下void HardFault_Handler(void)函数,原因可能有很多,多长调试发现是由于FreeRTOSConfig.h文件内容太少,看参考文档时,让去dome里找个这个文件,但是那个文件其实也需要改,解决办法直接用正点写好的。这个问题不会导致编译出错,所以当灯点不亮后,即使仿真也比较难找到原因。下图是展示这个文件。

初学STM32移植FreeRTOS遇到问题以及解决办法

补充说明

这里提供调试过移植好的代码

参考说明

前人栽树,后人乘凉。这里展示在调试过程中,参考过认为有帮助的文档或链接。
文档:
STM32F1 FreeRTOS开发手册_V1.0.pdf(可以去正点原子找)
链接:https://blog.****.net/qq_41544550/article/details/80729026(****有关第一个问题解决办法参考)