为什么FFT功能只能通过MCU GCC编译器(STM32CubeIDE)的Preprocessor激活?

Why the FFT function can only be activated through the Preprocessor of MCU GCC Compiler (STM32CubeIDE)?

很多网站都介绍过,如果我们要激活STM32板子的FFT/FPU,那么我们要激活:

__FPU_USED=1; __FPU_PRESENT=1; ARM_MATH_CMx.

我没有在 MCU GCC 编译器的预处理器(100% 有效)中输入这些词,而是尝试在我的 main.h 文件中添加这 3 行:

#define __FPU_USED=1

#define __FPU_PRESENT=1

#define ARM_MATH_CMx

但是,如果是这样,那是行不通的。 IDE会反馈很多问题,例如:

"error: unknown type name 'uint32_t'; did you mean 'uint32_t'?" 在 DSP 文件中。

我理解"the DSP files are not connected to my main files now"等问题。

这是我的问题:

如果我坚持在我的文件系统中declare/define这3行,而不是在我的STM32CubeIDE的预处理器中,我该怎么办? 提前谢谢了。

If I insist to declare/define these 3 lines in my file system, not in the Preprocessor of my STM32CubeIDE, what should I do?

要获得与使用编译器命令行选项定义宏相同的效果,您应该在 allfirst 行定义它们] 编译中使用的 C 和汇编源文件。

Why the FFT function can only be activated through the Preprocessor of MCU GCC Compiler (STM32CubeIDE)?

这个问题失去了意义,因为如上所述,还有另一种(非常不切实际的)方式。

这些宏被 system_stm32xxxx.c 文件使用,它检查是否启用数学协处理器。问题是该文件(xxxx 取决于您的 uC 模型)不包含 main.h.

您可以编辑它添加 #include "main.h" 行。那么你可以这样设置