Использование библиотеки arm_math.h в stm32f303

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
igor48
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Использование библиотеки arm_math.h в stm32f303

Сообщение igor48 »

Прошу помощи! Использую STM32F3Discovery и Keil 4. При создании проекта автоматически добавляется файл startup_stm32f30x.s, в котором в том числе прописаны обработчики прерываний. Если подключаем библиотечный файл arm_math.h, в котором имеется #include «ARMCM4.h». В последнем еще раз определены некоторые обработчики прерываний, на что Keil страшно ругается. Пробовал их закомментировал, но думаю, что это не правильно. Как тогда использовать arm_math.h.
Реклама
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Использование библиотеки arm_math.h в stm32f303

Сообщение Myp3ik »

Прописать
Вложения
Clip_2.jpg
(108.69 КБ) 1903 скачивания
Иван Сусанин - первый полупроводник :solder:
Реклама
igor48
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Re: Использование библиотеки arm_math.h в stm32f303

Сообщение igor48 »

Спасибо, работает! А можно чуть подробнее о сути происходящего. Без вышепоказанного кейл пишет "redefinition of IRQn". Т.е. в ARMCM4.h переопределяются некоторые IRQ под свои нужды?
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Использование библиотеки arm_math.h в stm32f303

Сообщение Myp3ik »

Я просто посмотрел файл arm_math.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
ARMCM4.h я вообще не нашел, подумал, что это заглушка на случай если мы забудем выбрать тип ядра.
Иван Сусанин - первый полупроводник :solder:
Реклама
Эиком - электронные компоненты и радиодетали
igor48
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Re: Использование библиотеки arm_math.h в stm32f303

Сообщение igor48 »

Действительно! Похоже, что вы правы! Еще раз благодарю.
Реклама
igor48
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Re: Использование библиотеки arm_math.h в stm32f303

Сообщение igor48 »

Кстати! Как оказалось, намного нагляднее и удобней это делать непосредственно в коде программы:
#define ARM_MATH_CM4
#include "arm_math.h"
Реклама
Аватара пользователя
Asmodey
Друг Кота
Сообщения: 6300
Зарегистрирован: Сб янв 28, 2006 22:47:24

Re: Использование библиотеки arm_math.h в stm32f303

Сообщение Asmodey »

[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». Скомпилировалось без ошибок.
Астролябия-сама меряет, было бы что мерять!!!
rezistor2000
Родился
Сообщения: 8
Зарегистрирован: Чт фев 04, 2021 08:45:28

Re: Использование библиотеки arm_math.h в stm32f303

Сообщение rezistor2000 »

С 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".
Ответить

Вернуться в «ARM»