Bug提示如下
../Drivers/CMSIS/Include/core_cm4.h(81): error: #35: #error directive: "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
奇怪,为什么那块代码就不应该编译,为什么会报错呢?
而且,我明明已经定义
#define __FPU_PRESENT 1U /*!< FPU present
进过一个晚上的,智障乱试,发现C语言编译器在编译头文件(.h)时,是按照它在C文件中出现的顺序来编译的。也就是说,它可能先编译的core_cm4.h,然后再编译stm32f405xx.h。这也就意味着,在编译core_cm4.h时,它不认为__FPU_PRESENT被宏定义了。
解决方法很简单,把stm32f405xx.h放到arm_math.h前面(doge)。