При попытке построить мой проект я получаю сообщения об ошибках типа:
Drivers/CMSIS/Include/core_cm4.h:1816:41: error: unknown type name 'IRQn_Type'; did you mean 'ITM_Type'?
1816 | __STATIC_INLINE void __NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
| ^~~~~~~~~
или
Drivers/CMSIS/Include/core_cm4.h: In function 'NVIC_EncodePriority':
Drivers/CMSIS/Include/core_cm4.h:1869:64: error: '__NVIC_PRIO_BITS' undeclared (first use in this function)
1869 | PreemptPriorityBits = ((7UL - PriorityGroupTmp) > (uint32_t)(__NVIC_PRIO_BITS)) ? (uint32_t)(__NVIC_PRIO_BITS) : (uint32_t)(7UL - PriorityGroupTmp);
Так что кажется, что IRQn_Type и __NVIC_PRIO_BITS не определены.
Насколько я понимаю, типы данных определены в файле stm32f407xx.h, и я уже говорю make, где его найти:
-IDrivers / CMSIS / Device / ST / STM32F4xx / Включить
Редактировать
Я только что увидел первые ошибки:
In file included from Drivers/CMSIS/DSP/Include/arm_math.h:322,
from Src/dsp/dsp.c:1:
Drivers/CMSIS/Include/core_cm4.h:105:8: error: #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
105 | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
| ^~~~~
In file included from Src/dsp/dsp.c:3:
Drivers/CMSIS/Include/core_cm4.h:1688:39: error: unknown type name 'IRQn_Type'; did you mean 'ITM_Type'?
1688 | __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)
| ^~~~~~~~~
| ITM_Type
Мой шаблонный файл сборки был сгенерирован CubeMX, но я внес некоторые изменения (изменил структуру папок, добавил определения и включил каталоги).
# C defines
C_DEFS = \
-DUSE_HAL_DRIVER \
-DSTM32F407xx \
-DARM_MATH_CM4
# C includes
C_INCLUDES = \
-IConfigs \
-ISrc \
-IDrivers/STM32F4xx_HAL_Driver/Inc \
-IDrivers/STM32F4xx_HAL_Driver/Inc/Legacy \
-IDrivers/CMSIS/Device/ST/STM32F4xx/Include \
-IDrivers/CMSIS/Include \
-IDrivers/CMSIS/DSP/Include
Я получаю только эту ошибку:
In file included from Drivers/CMSIS/DSP/Include/arm_math.h:322,
from Src/dsp/filter.h:9,
from Src/dsp/filter.c:1:
Drivers/CMSIS/Include/core_cm4.h:105:8: error: #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
105 | #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
| ^~~~~
make: *** [Makefile:228: build/filter.o] Error 1
если я поставлю эти строки над моим #include <arm_math.h>
.
#define STM32F407xx
#include "stm32f4xx.h"
После добавления также -D__FPU_PRESENT
к определениям, я все еще получаю ошибку:
In file included from Src/dsp/dsp.c:4:
Drivers/CMSIS/Include/core_cm4.h:1688:39: error: unknown type name 'IRQn_Type'; did you mean 'ITM_Type'?
1688 | __STATIC_INLINE void __NVIC_EnableIRQ(IRQn_Type IRQn)