STM32CubeIDE添加DSP库(附带如何添加代码库)

本文详细介绍了如何在STM32CubeIDE中添加并整合DSP静态库与源码,包括设置FPU、添加头文件和库、配置路径及符号,以及解决预编译冲突。适合移植DSP库到STM32F767IGT6的项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原来官方社区已经有技术贴了,那我这个算翻译+补充吧

STM32CubeIDE添加DSP静态库

最近项目需要使用DSP库,使用CubeIDE已久,于是试着在CubeIDE中移植DSP库。参考了网上的一些文章,觉得不是很完美。于是自己摸索,找了一些参考资料。记录了下在STM32CubeIDE中移植的DSP库的方法。

准备工作

我使用的单片机型号是STM32F767IGT6。这里只是展示移植库的例子,就不配置单片机的外设了。

软件中相关浮点功能

  • 工程默认已经开启了FPU功能,在头文件中定义了相关宏。
    在头文件中 stm32f767xx.h 中定义了 __FPU_PRESENT
    __FPU_PRESENT
    在头文件中 core_cm7.h 中定义了 __FPU_USED
    在这里插入图片描述
  • 在初始化中启用了浮点功能硬件。
    在这里插入图片描述

准备DSP库

DSP库可以在CubeIDE芯片固件库的安装目录下找到,如下图DSP文件夹中存放有代码库,Lib为静态库。
在这里插入图片描述
DSP文件夹中IncludeSource两个文件是我们需要的,Lib目录中我们只需要GCC文件夹中的库就好了。我把这3个文件夹及其内容复制到1个文件夹中,命名为CMSIS_DSP,然后放到建立的STM32CubeIDE工程同目录下。如图是我建立的工程,如果工程中没有CMSIS_DSP文件夹,可以右键工程刷新下。
在这里插入图片描述

添加DSP静态库

CubeIDE使用gcc作为编译器,因此使用静态库可以参考这几篇博客。(赶时间的同学可以直接看下面添加步骤)

单片机之模块库封装(.a)及使用(以CubeIDE为例)
static link:关于gcc连接静态库的几种方式

了解gcc添加静态库的规则后,我们就开始添加库吧。

  1. 添加头文件夹
    右键项目,Properties。C/C++General→Paths and Symbols。在Includes选项卡中添加DSP的头文件。点击Apply,不要关闭窗口,方便后面添加库操作。
    在这里插入图片描述

  2. 添加库文件夹,添加库名
    接着在Library Paths选项卡下添加包含库的文件夹。同样为方便操作,添加好库文件夹后点Apply不要Close。
    在这里插入图片描述

  3. 再下来,参考gcc添加库的文章,我们看到库文件夹CMSIS_DPS/GCC中有3个库,它们都用lib做前缀。
    在这里插入图片描述

    根据规则我们去掉“lib”前缀,把库的名字加到Libraries选项卡中就可以了。OK之后同样点Apply不要Close。添加1个库就好。
    在这里插入图片描述

  4. 最后在Symbols中添加宏定义 ARM_MATH_CM7 告诉DSP库使用的arm内核类型。这里就可以Apply and Close了。就此添加DSP静态库就好了。
    在这里插入图片描述

  5. 测试代码,编译验证
    在项目中添加头文件“math.h", “arm_math.h”,我使用的测试代码如下,编译正常。

  int16_t i;
  float32_t pSinVal;
  float32_t pCosVal;
  for(i = -180; i < 180; i++)
  {
      arm_sin_cos_f32(i, &pSinVal, &pCosVal);
  }
  1. 使用静态库的方法完成。我们看到前面有3个库,选用哪个可以参考相关文档,我也正在学习中。

写在最后,简单写写添加DSP源码库

上面的例子使用了DSP静态库,读者们应该发现了还没用CMSIS_DSP中的Source文件夹。这个文件夹放的就是DSP库的代码。新建1个项目,像添加普通的库一样,右键项目,Properties。C/C++General→Paths and Symbols(哎,没错又是我)。在Source Location选项卡中添加源码库文件夹。头文件和宏定义同静态库添加方法一样。
但是发现编译会报错在这里插入图片描述
经过查找发现这是头文件中的预编译命令。但是实际上头文件中已经定义了 __FPU_PRESENT。不知是编译器的BUG还是啥。那我们在头文件中 stm32f767xx.h 中找到这个定义将它注释掉。然后在Symbols选项卡中添加宏命令
在这里插入图片描述

点击OK→Apply and Close就可以愉快的编译了,没有报错也没有重复定义。
如此添加DSP源码库的例子也完成了。

### 集成并配置 DSP STM32CubeIDE #### 下载 CMSIS 和 DSP 为了在STM32CubeIDE中集成DSP,需先访问意法半导体官方网站下载最新的STM32CubeMX工具[^1]。通过STM32CubeMX可以方便地初始化项目设置,并自动导入必要的外设驱动和中间件组件,包括CMSIS-DSP。 对于特定系列如STM32F1而言,在KEIL MDK环境中,DSP已经预装在其运行时环境中;然而当切换到STM32CubeIDE环境下工作时,则可能需要手动添加这些资源[^2]。 #### 安装过程中的注意事项 启动STM32CubeIDE之后创建新工程或打开已有工程文件(.ioc),接着利用内置管理器来更新至最新版的Pack Indexes以及安装所需的Device Support Package与CMSIS Pack。这一步骤确保了所使用的硬件抽象层(HAL)DSP函数均处于最稳定状态。 #### 添加外部的具体操作方法 - 打开Project菜单下的Properties选项; - 寻找C/C++ Build -> Settings分支下Tool Settings标签页内的MCU Setting节点; - 将之前准备好的`cmsis_dsp.h`头文件路径加入Include Paths列表里; - 同样在此处指定链接阶段需要用到的目标架构对应的`.a`静态库位置。 ```cpp #include "arm_math.h" // 初始化Q7类型的向量变量用于后续运算处理... q7_t inputVector[VECTOR_SIZE]; ``` 上述代码片段展示了如何引入ARM官方提供的数学计算API接口定义文件,以便开发者能够调用其中封装好了的各种高效算法实现复杂信号处理任务。 #### 测试验证功能正常与否 编写简单的测试案例以确认一切按预期运作良好是非常重要的实践环节之一。比如尝试执行快速傅立叶变换(FFT)或者矩阵乘法等典型应用场景下的性能表现评估。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值