项目场景:
STM32F4开发板添加FreeRtos后在Clion中编译报错
问题描述
通过STM32CubeMX选择STM32F407ZGT6开发板,移植FreeRtos后直接进行编译后报错:
Error: selected processor does not support `vstmdbeq r0!,{s16-s31}' in Thumb mode
Error: instruction not allowed in IT block -- `stmdb r0!,{r4-r11,r14}'
原因分析:
CmakeLists.txt配置出错
CmakeLists.txt文件中有一部分编译选项默认是被注释掉的,找到相关选项取消注释即可
但是将硬浮点运算的选项取消注释后再次编译还是存在报错,查阅相关资料后发现添加如下内容即可
解决方案:
具体内容如下
add_compile_definitions(ARM_MATH_CM4;ARM_MATH_MATRIX_CHECK;ARM_MATH_ROUNDING)
add_compile_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)
add_link_options(-mfloat-abi=hard -mfpu=fpv4-sp-d16)#Uncomment for software floating point
编译后成功运行
具体原因我也不清楚,对Cmake不太理解,基本都是自动生成直接用,恳请各位大佬指教!