STM32中DSP库简单理解和使用

这篇具有很好参考价值的文章主要介绍了STM32中DSP库简单理解和使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

STM32中DSP库简单理解和使用


主要参考arm_math.h中的内容编写,以STM32F091为例


一、什么是DSP

数字信号处理(DigitalSignal Processing,简称 DSP ) 是一门涉及许多学科而又广泛应用于许多领 域的新兴学科,通过利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、 压缩、识别等处理,以得到符合人们需要的信号形式。

STM32中添加DSP库主要用于数据的计算和处理,如复数,矩阵,三角函数,插值、求最大值求最小值、fir滤波器和 FFT等。

以下为arm_math.h对于DSP的简介

本用户手册描述了CMSIS DSP软件库,

*一套通用信号处理函数,可用于基于Cortex-M处理器的设备。

*库被划分为许多函数,每个函数覆盖一个特定的类别:

  • -基本的数学函数

  • -快速的数学函数

  • -复杂的数学函数

  • -过滤器

  • -矩阵函数

  • -变形

  • -电机控制功能

  • -统计函数

  • -支持函数

  • -插值函数

*该库有独立的函数用于操作8位整数、16位整数、32位整数和32位浮点值。

二、大概使用步骤

选择合适lib

首先要搞清楚所使用单片机的端绪是小端还是大端,可以查手册得知是大端还是小端。如STMF091是小端(Little Endian)模式。
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发
以下为DSP库类型。名称中带l的为小端模式(Little Endian)库,带d的为大端模式(Big Endian)库,带f的为浮点单元,sp代表单精度,dp代表双精度。
以STM32F091为例,则选择在CMSIS中加入arm_cortexM0l_math.lib

*库安装程序在Lib文件夹中包含库的预构建版本。

    • arm_cortexM7lfdp_math.lib(Cortex-M7,小端序,双精度浮点单元)
    • arm_cortexM7bfdp_math.lib(Cortex-M7,大端序,双精度浮点单元)
    • arm_cortexM7lfsp_math.lib (Cortex-M7,小端序,单精度浮点单元)
    • arm_cortexM7bfsp_math.lib(Cortex-M7,大端序和单精度浮点)
    • arm_cortexM7l_math.lib (Cortex-M7,小端序)
    • arm_cortexM7b_math.lib (Cortex-M7,大端序)
    • arm_cortexM4lf_math.lib (Cortex-M4,小端序,浮点单元)
    • arm_cortexM4bf_math.lib(Cortex-M4,大端序,浮点单元)
    • arm_cortexM4l_math.lib (Cortex-M4,小端序)
    • arm_cortexM4b_math.lib (Cortex-M4,大端序)
    • arm_cortexM3l_math.lib (Cortex-M3,小端序)
    • arm_cortexM3b_math.lib (Cortex-M3,大端序)
    • arm_cortexM0l_math.lib (Cortex-M0 / Cortex-M0+,小端序)
    • arm_cortexM0b_math.lib (Cortex-M0 / Cortex-M0+,大端序)
    • arm_ARMv8MBLl_math.lib (Armv8-M基线,小端序)
    • arm_ARMv8MMLl_math.lib (Armv8-M主线,小端序)
    • arm_ARMv8MMLlfsp_math.lib(Armv8-M主线,小端序,单精度浮点单元)
    • arm_ARMv8MMLld_math.lib (Armv8-M主线,小端序,DSP指令)
    • arm_ARMv8MMLldfsp_math.lib Armv8-M主线,小端序,DSP指令,单精度浮点单元

引用库

*库函数声明在公共文件arm_math.h中,该文件位于Include文件夹中。

*只需包含此文件并在应用程序中链接适当的库,然后开始调用库函数。该库支持single

*对于具有小端序和大端序的Cortex-M内核,公共头文件 arm_math.h。浮点单元(FPU)变体将使用相同的头文件。

添加预置宏

不同的芯片要添加的预置宏不尽相同,其与处理器型号有关,同样以STM32F091为例,查手册可知,其为Cortex-M0类型
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发
或者,可以通过下表确认处理器型号
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发

*定义适当的预处理器宏ARM_MATH_CM7或ARM_MATH_CM4或ARM_MATH_CM3或ARM_MATH_CM0或ARM_MATH_CM0plus取决于应用程序中的目标处理器。

*对于Armv8-M内核,定义预处理器宏ARM_MATH_ARMV8MBL或 ARM_MATH_ARMV8MML。

*如果Armv8-M主线内核支持DSP指令,则设置预处理器宏__DSP_PRESENT。

二、具体使用步骤(基于cubmx)

1.使用STM32CubeMX生成Keil5工程

特别注意:点击Project Manager打开工程设置窗口,点击Code Generator选项卡,在STM32Cube Firmware Library Package中选择Copy all used libraries into the project folder。(这样才会在生成的文件中添加DSP库)
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发

2.选择合适lib和添加

打开keil,双击Drivers/CMSIS,选第三个,添加已经存在的文件
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发
打开工程下这个路径
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发
选择合适lib加入
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发
如下即为添加成功
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发

2.添加宏定义

点击魔法棒,C/C++选项,添加宏定义,因为f091为Cortex-M0类型,所以添加ARM_MATH_CM0宏定义(注意:宏定义间的符号为英文逗号)
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发
在C/C++选项卡中,的Include Paths中添加DSP库的路径:\Drivers\CMSIS\DSP\Include
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发
点 OK --> 点OK

3.在相应c文件中引用 arm_math.h就可以使用了

官方有关于HAL库的DSP库例程,大概在此路径下D:\stm3232\STM32Cube_FW_F0_V1.11.4\Drivers\CMSIS\DSP\Examples,同时在工程文件下.Drivers\CMSIS\DSP\Examples也可以看到例程
如果找不到的话,再次推荐一个超超超超超超超超级好用的搜文件软件 everything(点击即可跳转至官方网站,可以挑选适合自己设备的版本下载)


测试

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "arm_math.h"
/* USER CODE END Includes */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
float data;
/* USER CODE END PD */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  data = arm_cos_f32(PI/3) ;
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

理论结果为0.5,结果合理,大功告成!!!!!!
dsp stm32,stm32,单片机,嵌入式硬件,dsp开发文章来源地址https://www.toymoban.com/news/detail-553481.html

到了这里,关于STM32中DSP库简单理解和使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32浮点运算单元(FPU)和DSP库使用

    ==== 文章汇总(有代码汇总) ==== 针对M4往上内核的芯片都具有FPU浮点运算单元。可以加快浮点数的运算速度。 硬件:STM32F401CCU6系统板(淘宝十几块钱一个系统板)。 软件:CubeMX、Keil(5.38,建议使用新版本的,对于宏定义没有的部分会有灰色提示)。 首先打开 system_stm32f4xx.c 可

    2024年02月15日
    浏览(39)
  • STM32调用DSP函数方法

    ..DriversCMSISDSPIncludearm_math.h(341): error:  #35: #error directive: \\\"Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_MATH_ARMV8MBL, ARM_MATH_ARMV8MML\\\"     #error \\\"Define according the used Cortex core ARM_MATH_CM7, ARM_MATH_CM4, ARM_MATH_CM3, ARM_MATH_CM0PLUS, ARM_MATH_CM0, ARM_M

    2024年02月12日
    浏览(26)
  • DSP与STM32的区别

    DSP(Digital Signal Processor,数字信号处理器)和STM32是在嵌入式系统领域中被广泛应用的两种技术。它们在功能和应用方面有一些相似之处,但也存在一些显著的区别。本文将详细介绍DSP和STM32之间的区别,并提供相关的源代码示例。 功能和应用领域: DSP:DSP是为数字信号处理

    2024年01月18日
    浏览(22)
  • STM32移植DSP库详细步骤

            先将下载的DSP库文件放到需要的项目目录下。                  随后打开keil项目进入配置。右键项目名称,点击管理项目选项;创建一个DSP文件添加依赖后点击OK。            点击小魔术棒,点击C/C++选项,在Define中添加ARM_MATH_CM3,然后添加DSP的.c和.h文件路径,

    2024年02月13日
    浏览(28)
  • 【STM32】STM32F4调用DSP库实现FFT运算

    最近在整理之前的stm32笔记,打算把一些有价值的笔记发到CSDN分享一下。 在进行模拟/数字信号的转换过程中,当采样频率F大于信号中最高频率 fmax 的 2 倍时(F2*fmax),采样之后的数字信号完整地保留了原始信号中的信息。 设采样频率(单位时间可以采多少个信号样本)为 F

    2023年04月24日
    浏览(30)
  • STM32F407添加DSP库

    编译程序出现以下报错 出现 “error: #5: cannot open source input file “arm_const_structs.h”: No such file or directory” 错误的原因是编译器无法找到名为 “arm_const_structs.h” 的头文件。 头文件路径错误 头文件未安装或丢失 编译器配置问题 添加DSP库 添加DSP库可以参考这篇博客: STM32CubeMX关

    2024年02月05日
    浏览(47)
  • 【stm32开发笔记】基于HAL库的STM32F4添加DSP库

    本文分两种方法添加DSP库:1.CubeMX直接配置ioc添加; 2.KEIL内添加; 简述:补齐全部lib库-添加DSP包-使能DSP勾选-添加头文件及魔术棒配置-测试 1.补齐lib库。( 如果使用直接默认添加的库,是不支持FPU的,所以需要补齐后找到所需的lib文件进行替换,在MX的工程管理栏,选择复制所

    2024年02月16日
    浏览(41)
  • cubeMX+CLion开发STM32,添加DSP库

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、使用cubeMX创建工程并添加DSP库 二、修改Cmake配置 总结 前段时间看了改用CLion做STM32的开发,使用cubeMX添加DSP库,生成项目后编译报错undefined reference to `arm_sin_f32\\\',参考了很多文章都是

    2024年02月13日
    浏览(30)
  • STM32自带的DSP库的滤波初体验(一)

    最近在弄STM32自带的DSP库里的滤波,记录一下:         整个滤波的过程比较简单,先是调用arm_fir_init_q15函数来初始化instance_q15_S,然后用三角函数生成一个50Hz+6000Hz的正弦数组,放在testInput数组中,最后调用arm_fir_q15函数来滤波。         这个里面需要注意的是,滤波系

    2024年02月14日
    浏览(26)
  • STM32 DSP库CUBEMX配置+FFT频率计算

    使用DSP中的函数加快计算。 本文首先讲述如何通过添加dsp库。 再讲述使用DSP库进行实数FFT运算。(FFT运算用到了前面讲述的STM32CubeMX-ADC hal库 3定时器触发) 参考1文章 参考2文章 先找到文件路径 然后设置如下路径 双击如下并找到路径 D:STM32CubeMXSTM32Cube_FW_F4_V1.26.2DriversCMS

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包