使用DSP库出现的问题调试

1、简介

我们在使用 CubeMX 生成相应的工程后,在一些状况下需要使用 DSP 库。在使用 CMSIS 文件中的 DSP 库是出现错误。

2、准备

2.1、软件

1、HAL 库版本:STM32Cube FW_F3 V1.11.2

2.2、开发工具

1、STM32CubeMX 6.2.0

2、Keil uVision5 V5.34.0.0

2.3、代码测试时间

2021年8月5日

2.4、CMSIS

CMSIS安装包:https://www.aliyundrive.com/s/Lcocs2NtLuS

阿里云链接貌似有问题,可以看另一篇博文:https://blog.csdn.net/qq_39567970/article/details/119508679

2.4、参考

https://blog.csdn.net/yuleitao/article/details/105621492

https://blog.csdn.net/sinat_36568888/article/details/78190685

3、添加 DSP 库后出现错误

将 Keil 安装目录下的 CMSIS 文件中的 DSP 移植到工程中,路径如下所示

 

 在头文件,库路径正确添加编译后出现如下所示错误

4、解决方法

4.1、参考官方社区解决方法

ARM官方社区链接

https://community.arm.com/developer/tools-software/tools/f/armds-forum/45405/getting-errors-after-including-arm_math-h

在 ARM 官方社区的连接中也有类似的问题,解决方法是将 CORE 文件夹中的 cmsis_armcc.h 和对应的mcu内核文件core_cm7.h

我使用的是 M4 核的单片机,所以我替换了 core_cm4.h 替换完之后(用 CMSIS5.7.0 文件中 CORE 文件夹中的),编译成功。

但是存在问题是,当下次添加新的外设使用 CubeMX 更新工程后,自己替换的两个文件会被刷新掉。

这就是个新的问题?

4.2、完善解决方法

解决上述新的问题:我们打开目录下的 CubeMX 工程(.ioc 文件),如下图所示。

 勾选第二个(只拷贝需要的库文件)工程目录下的文件

 勾选第一个(拷贝所有的库文件)工程目录下的文件

 打开 Keil MDK 的工程,在管理运行时环境的选项中 CMSIS 中的 DSP 选项勾选上,操作如下图所示。(注意此处要选为库文件模式,源文件模式会出现报错,具体原因未知,欢迎大家讨论)

 选择好运行时的环境配置后,在工程目录树下 CMSIS 下出现我们需要的 库文件。

添加相应的路径,操作如下图所示。

  1. DSP 库的头文件路径。

  2. DSP 编译的 Lib 库文件路径

注意 在标记2处的下方 Define 中添加 ,ARM_MATH_CM4,__TARGET_FPU_VFP,__FPU_PRESENT=1U

 5、测试

在使用 DSP 库的文件中添加头文件 arm_math.h

添加测试代码

DSPtest = arm_sin_f32(0.25f*Pi);
DSPtest1 = arm_cos_f32(0.0F);

运行结果

猜你喜欢

转载自blog.csdn.net/qq_39567970/article/details/119508191