Использование библиотеки arm_math.h в stm32f303
Использование библиотеки arm_math.h в stm32f303
Прошу помощи! Использую STM32F3Discovery и Keil 4. При создании проекта автоматически добавляется файл startup_stm32f30x.s, в котором в том числе прописаны обработчики прерываний. Если подключаем библиотечный файл arm_math.h, в котором имеется #include «ARMCM4.h». В последнем еще раз определены некоторые обработчики прерываний, на что Keil страшно ругается. Пробовал их закомментировал, но думаю, что это не правильно. Как тогда использовать arm_math.h.
- Реклама
Re: Использование библиотеки arm_math.h в stm32f303
Прописать
- Вложения
-
- Clip_2.jpg
- (108.69 КБ) 1903 скачивания
Иван Сусанин - первый полупроводник 
Re: Использование библиотеки arm_math.h в stm32f303
Спасибо, работает! А можно чуть подробнее о сути происходящего. Без вышепоказанного кейл пишет "redefinition of IRQn". Т.е. в ARMCM4.h переопределяются некоторые IRQ под свои нужды?
Re: Использование библиотеки arm_math.h в stm32f303
Я просто посмотрел файл arm_math.h и увидел там
ARMCM4.h я вообще не нашел, подумал, что это заглушка на случай если мы забудем выбрать тип ядра.
Код: Выделить всё
#if defined (ARM_MATH_CM4)
#include "core_cm4.h"
#elif defined (ARM_MATH_CM3)
#include "core_cm3.h"
#elif defined (ARM_MATH_CM0)
#include "core_cm0.h"
#else
#include "ARMCM4.h"
#warning "Define either ARM_MATH_CM4 OR ARM_MATH_CM3...By Default building on ARM_MATH_CM4....."
#endif
Иван Сусанин - первый полупроводник 
Re: Использование библиотеки arm_math.h в stm32f303
Действительно! Похоже, что вы правы! Еще раз благодарю.
- Реклама
Re: Использование библиотеки arm_math.h в stm32f303
Кстати! Как оказалось, намного нагляднее и удобней это делать непосредственно в коде программы:
#define ARM_MATH_CM4
#include "arm_math.h"
#define ARM_MATH_CM4
#include "arm_math.h"
Re: Использование библиотеки arm_math.h в stm32f303
[uquote="Myp3ik",url="/forum/viewtopic.php?p=2045291#p2045291"]Прописать[/uquote]
Как сделать что-то такое в IAR?
P.S. Методом тыка нашел. В IAR 8.30.1 нужно поставить галки "Use CMSIS" и "DSP Library" в поле "CMSIS" во вкладке "General Options-Library Configuration" и вписать ARM_MATH_CM4 в поле «Defend symbols: (One per line)» во вкладке «C/C++ Compiler-Preprocessor».
P.P.S. Оказалось, это еще не все. Как я понимаю, требуется выбрать VFPv4 single precision в выпадающем списке «FPU» в поле «General Options-Target». После чего проект скомпилировался, но появилось всплывающее окно с сообщением что не найден файл arm_cmplx_mag_q15.c в какой-то директории на диске D:. При том, что у меня нет диска D. И дальше предложение пропустить этот момент. При нажатии Skip проект компилируется вроде, но недостача какого-то файла, это ненормально, я считаю. Взял этот файл из скачанной с сайта ST либы CMSIS и добавил его в проект. Кажется прокатило.
P.P.P.S. Не прокатило. Теперь в мессагах Build стало появлятся сообщение Fatal Error[Pe035]: #error directive: "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" C:\STM32\F303\Fourier\CMSIS\core_cm4.h 117. Нашел в файле stm32f303xc.h такую строчку #define __FPU_PRESENT 1U /*!< STM32F303xC devices provide an FPU */. Скопировал оттуда __FPU_PRESENT в поле «Defend symbols: (One per line)» во вкладке «C/C++ Compiler-Preprocessor». Скомпилировалось без ошибок.
Как сделать что-то такое в IAR?
P.S. Методом тыка нашел. В IAR 8.30.1 нужно поставить галки "Use CMSIS" и "DSP Library" в поле "CMSIS" во вкладке "General Options-Library Configuration" и вписать ARM_MATH_CM4 в поле «Defend symbols: (One per line)» во вкладке «C/C++ Compiler-Preprocessor».
P.P.S. Оказалось, это еще не все. Как я понимаю, требуется выбрать VFPv4 single precision в выпадающем списке «FPU» в поле «General Options-Target». После чего проект скомпилировался, но появилось всплывающее окно с сообщением что не найден файл arm_cmplx_mag_q15.c в какой-то директории на диске D:. При том, что у меня нет диска D. И дальше предложение пропустить этот момент. При нажатии Skip проект компилируется вроде, но недостача какого-то файла, это ненормально, я считаю. Взял этот файл из скачанной с сайта ST либы CMSIS и добавил его в проект. Кажется прокатило.
P.P.P.S. Не прокатило. Теперь в мессагах Build стало появлятся сообщение Fatal Error[Pe035]: #error directive: "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" C:\STM32\F303\Fourier\CMSIS\core_cm4.h 117. Нашел в файле stm32f303xc.h такую строчку #define __FPU_PRESENT 1U /*!< STM32F303xC devices provide an FPU */. Скопировал оттуда __FPU_PRESENT в поле «Defend symbols: (One per line)» во вкладке «C/C++ Compiler-Preprocessor». Скомпилировалось без ошибок.
Астролябия-сама меряет, было бы что мерять!!!
-
rezistor2000
- Родился
- Сообщения: 8
- Зарегистрирован: Чт фев 04, 2021 08:45:28
Re: Использование библиотеки arm_math.h в stm32f303
С IAR не работал, но должно не сильно отличаться:
1. подключить нужную библиотеку. Например, libarm_cortex..._math.a как arm_cortex..._math
2. указать путь к \Drivers\CMSIS\Lib\GCC, \Drivers\CMSIS\DSP\Include и к libarm_cortex..._math.a файлу
3. прописать __FPU_PRESENT, ARM_MATH_CM4 не через #define, а в "Symbols".
1. подключить нужную библиотеку. Например, libarm_cortex..._math.a как arm_cortex..._math
2. указать путь к \Drivers\CMSIS\Lib\GCC, \Drivers\CMSIS\DSP\Include и к libarm_cortex..._math.a файлу
3. прописать __FPU_PRESENT, ARM_MATH_CM4 не через #define, а в "Symbols".


