Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Вс июн 15, 2014 20:42:01

Прошу помощи! Использую STM32F3Discovery и Keil 4. При создании проекта автоматически добавляется файл startup_stm32f30x.s, в котором в том числе прописаны обработчики прерываний. Если подключаем библиотечный файл arm_math.h, в котором имеется #include «ARMCM4.h». В последнем еще раз определены некоторые обработчики прерываний, на что Keil страшно ругается. Пробовал их закомментировал, но думаю, что это не правильно. Как тогда использовать arm_math.h.

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

Вс июн 15, 2014 21:27:20

Прописать
Вложения
Clip_2.jpg
(108.69 KiB) Скачиваний: 1652

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

Вс июн 15, 2014 21:59:55

Спасибо, работает! А можно чуть подробнее о сути происходящего. Без вышепоказанного кейл пишет "redefinition of IRQn". Т.е. в ARMCM4.h переопределяются некоторые IRQ под свои нужды?

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

Вс июн 15, 2014 22:10:20

Я просто посмотрел файл 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 я вообще не нашел, подумал, что это заглушка на случай если мы забудем выбрать тип ядра.

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

Пн июн 16, 2014 12:30:43

Действительно! Похоже, что вы правы! Еще раз благодарю.

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

Вт июн 17, 2014 20:53:13

Кстати! Как оказалось, намного нагляднее и удобней это делать непосредственно в коде программы:
#define ARM_MATH_CM4
#include "arm_math.h"

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

Пн фев 01, 2021 15:01:48

Прописать

Как сделать что-то такое в 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». Скомпилировалось без ошибок.

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

Вс фев 07, 2021 12:09:32

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