gpt4 book ai didi

c - 未知数据类型 IRQn_Type,

转载 作者:行者123 更新时间:2023-11-30 14:38:36 28 4
gpt4 key购买 nike

当尝试构建我的项目时,我收到如下错误:

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/设备/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

我的模板 makefile 是由 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)

最佳答案

为了确保包含特定微 Controller 的头文件,您需要定义相关的宏。对于您的情况,您需要确保将 -DSTM32F407xx 传递给您的编译器。具体如何执行此操作取决于您的构建环境。

完成此操作后,相关头文件将为 automatically included via stm32f4xx.h .

如果您想知道如何确保包含 stm32f4xx.h - 以及是否需要将其显式包含在您自己的源文件中......

通常,您不需要显式包含 stm32f4xx.h。只要您包含其中一种标准外设(例如 RCC 或 GPIO)的头文件,它就会自动包含在内。

因此包含链可能如下所示:

  • stm32f4xx_rcc.h <- 包含在源文件中
    • stm32f4xx.h
      • stm32f407xx.h

后两者是自动的 - 只要在预处理器标志中传递 -DSTM32F407xx 即可。

关于c - 未知数据类型 IRQn_Type,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56489064/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com