Почему функцию FFT можно активировать только через препроцессор компилятора MCU G CC (STM32CubeIDE)? - PullRequest
1 голос
/ 05 марта 2020

Как указывалось на многих веб-сайтах, если мы хотим активировать FFT / FPU платы STM32, тогда мы должны активировать:

__ FPU_USED = 1; __FPU_PRESENT = 1; ARM_MATH_CMx.

Вместо того, чтобы вводить эти слова в препроцессоре MCU G CC Compiler (который работает на 100%), я попытался добавить эти 3 строки в мой файл main.h:

# define __FPU_USED = 1

# define __FPU_PRESENT = 1

# define ARM_MATH_CMx

Однако, если это так, это не работает. Среда IDE сообщит о многих проблемах, например:

"ошибка: неизвестное имя типа" uint32_t "; вы имели в виду" uint32_t "?" в файлах DSP.

Я понимаю такие проблемы, как «файлы DSP сейчас не связаны с моими основными файлами».

Вот мой вопрос:

Если я настаиваю на том, чтобы объявить / определить эти 3 строки в моей файловой системе, а не в препроцессоре моего STM32CubeIDE, что мне делать? Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Эти макросы используются файлом system_stm32xxxx. c, где он проверяет, включить математический сопроцессор или нет. Проблема в том, что этот файл (где xxxx зависит от вашей модели u C) не содержит main.h.

. Вы можете отредактировать его, добавив строку #include "main.h". Тогда вы можете настроить его таким образом

1 голос
/ 05 марта 2020

Если я настаиваю на том, чтобы объявить / определить эти 3 строки в моей файловой системе, а не в препроцессоре моего STM32CubeIDE, что мне делать?

Чтобы добиться того же эффекта, что и при определении макросов с помощью параметров командной строки компилятора, вы должны определить их в первых строках всех C и исходные файлы сборки, которые используются при компиляции.

Почему функцию FFT можно активировать только через препроцессор MCU G CC Compiler (STM32CubeIDE)?

Вопрос утратил смысл, потому что, как указано выше, есть другой (очень непрактичный) способ.

...