cubemx在工程中添加freertos后报错原因及解决办法
1、使用cubemx工具在STM32工程中添加freertos
报错原因:
编译器不兼容,使用的6版本的,如果换成5版本可以解决
解决方法
解决办法1、把编译器版本从6换成5就可以解决
解决办法2(如果想用6版本编译器),直接搜索freertos官网,进去下载官网源码
点击download下载
下载好了之后解压缩,进去目录,\FreeRTOSv202406.04-LTS\FreeRTOS-LTS\FreeRTOS\FreeRTOS-Kernel\portable\GCC,选择ARM_CM4F,我选这个是因为我的芯片架构是带硬件 FPU(硬件浮点单元) 的 Cortex-M4
找到用cubemx生成的目录\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS
下把刚才复制的粘贴过来,直接替换掉这个同名文件
然后再打开工程换回6版本编译器后,重新编译
现在有报错是因为用cubemx生成的工程:
CubeMX 开启了 CMSIS-RTOS
它默认会启用一些 FreeRTOS 的 trace 调试宏。
你手动添加了官网下载的 FreeRTOS 源码
官网原版 默认没有开启 trace,也没有实现这三个函数。
结果:编译能过,链接失败
cmsis_os.c 里调用了这三个函数,但找不到实现。//直接在 FreeRTOSConfig.h文件的任意一个地方添加三行就可以了 #define traceISR_ENTER() #define traceISR_EXIT() #define traceISR_EXIT_TO_SCHEDULER()
现在就没有报错了
