STM32F429用arm_math.h遇到的两个问题

问题1:

报错
…\Libraries\CMSIS\Include\arm_math.h(299): error: #35: #error directive: "Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS or ARM_MATH_CM0"

在这里插入图片描述


问题1解决:

在这里插入图片描述


问题2:

在添加并连接成功arm_math.h后,报错
…\Output\project.axf: Error: L6218E: Undefined symbol arm_fir_f32 (referred from filter.o).
…\Output\project.axf: Error: L6218E: Undefined symbol arm_fir_init_f32 (referred from filter.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.

在这里插入图片描述
在这里插入图片描述
在arm_math.h找到两个函数的申明,但没有找到定义。
在这里插入图片描述


问题2分析:

找不到函数arm_fir_f32和arm_fir_init_f32的定义c函数。

由于工程是移植野火的:在这里插入图片描述
在这里插入图片描述


问题2解决:

从官方版本里找到函数对应的c文件,并添加进工程里。
在这里插入图片描述

在这里插入图片描述

### 解决 Keil 编译 STM32F407xx 使用 USE_HAL_DRIVER 和 ARM_MATH_CM4 的报错 当遇到 Keil 编译 STM32F407xx 项目时,如果配置不正确可能会引发多个错误。为了确保顺利编译并使用浮点运算单元 (FPU),需要仔细设置宏定义和其他参数。 #### 宏定义设置 在 KEIL 中添加必要的宏定义可以有效解决编译器无法识别特定功能的问题。对于 STM32F407 芯片而言,应当加入如下宏定义: - `USE_HAL_DRIVER`:用于启用硬件抽象层库的支持。 - `STM32F407xx`:指定目标设备型号。 - `ARM_MATH_CM4`:指示使用的 Cortex-M 系列处理器类型。 - `__FPU_PRESENT=1U`:表明存在 FPU 单元。 - `__FPU_USED=1U`:表示程序会利用到 FPU 功能[^1]。 这些宏可以通过 IDE 内部选项来设定,在项目属性中的 C/C++ 设置里找到预处理符部分进行补充。 #### 配置方法 进入项目的“Options for Target”,选择“C/C++”标签页下的 Preprocessor Symbols 字段,依次输入上述各个宏名及其赋值(如果有)。具体操作步骤如下图所示(假设已打开对应窗口): ![image](https://example.com/image.png) 另外,还需要确认启动文件 Startup 文件已经针对带 FPU 支持进行了适当的选择,并且链接脚本 Linker Script 正确指定了内存布局以及堆栈大小等重要参数[^2]。 通过以上调整后重新尝试构建工程,通常能够消除大部分由于缺少必要宏定义所引起的警告或错误信息。 ```c // 示例代码片段展示如何初始化 HAL 库 #include "stm32f4xx_hal.h" int main(void){ HAL_Init(); // 初始化全局资源 while(1){ // 用户应用程序逻辑... } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值