CubeMX生成的STM32F4xx MDK工程FPU和DSP库的使用

2 篇文章 0 订阅
订阅专栏

CubeMX生成的STM32F4xx MDK工程FPU和DSP库的使用

STM32F4xx属于Cortex M4F架构,带有32位的单精度硬件FPU(Float Point Unit),支持浮点指令集,相对比M0和M3架构,浮点运算性能高出数十倍甚至上百倍。FPU和DSP库的使用网上已经有了好多教程,但好多都是基于正点原子代码操作的,在CubeMX生成的工程中如何使用如何使用上述两种功能,并没有针对性的提及。

一、启动硬件FPU

1、启用FPU简介

此处关键在于对两个重要的全局宏定义进行操作:将 _FPU_PRESENT_FPU_USED 都置1,其中宏定义标识符_FPU_PRESENT用来确认处理是否带有FPU功能,标识符_FPU_USED用来确定是否开启FPU功能。实际上,因为STM32F4是带有FPU功能的,所以在stm32f4xxxx.h头文件中,默认定义_FPU_PRESENT为1。

在这里插入图片描述

正常按照条件编译,_FPU_USED,应该被置1,但在core_cm4.h中条件编译会并没有将 _FPU_USED 置1,同时还会报错。

在这里插入图片描述

根据条件编译的原理,应该是编译器没有检测到_FPU_PRESENT被定义,于是我将定义_FPU_PRESENT的文件 包含进来,可以看到条件编译已经把 _FPU_USED 置1了

在这里插入图片描述

但编译时,不清楚具体的原因会大量报错。下面我就正式讲解一下我解决这个问题的方法。(进入正题)

2、启用FUP方法

①.首先在Option for Target → Target → Coda Generation中启用FPU。

在这里插入图片描述

②.在Option for Target → C/C++ → Define中添加四个宏定义(后三个是用在DSP调用过程中的,此处一并添加了),并将stm32f4xxxx.h头文件中,默认的定义_FPU_PRESENT注释掉。否则__FPU_PRESENT会重复定义。

__FPU_PRESENT=1,__TARGET_FPU_VFP,ARM_MATH_CM4,__CC_ARM

在这里插入图片描述

③.编译,到此单片机的硬件FPU便被启用。

二、DSP库的使用

1、DSP库初识

STM32F4的Cortex-M4内核不仅内置硬件FPU单元,还支持DSP多种指令集,比如支持单周期乘加指令(MAC)、优化的单指令多数据指令(SIMD)等。因此Cortex-M4执行所有的DSP指令集都可以在单周期内完成,而Cortex-M3和M0需要多个指令和多个周期才能完成同样的功能。比如开方运算,M3和M0只能通过迭代法(标准数学函数库)计算,而M4F直接调用VSQRT指令完成。

①.DSP库的获取: 官网下载,并解压;但使用CubeMX生成MDK工程时,选择添加全部文件,则在生成的工程文件中已将带有DSP的相关文件和库了,不需单独下载。

DSP库路径如下:

在这里插入图片描述

DSP相关文件、例程路径如下:

在这里插入图片描述

②.DSP库介绍

在这里插入图片描述

DSP库主要包含以下几个分库:

  • BasicMathFunctions – 基本数学函数:提供浮点数的各种基本运算函数,如向量加减乘除等运算。
  • ommonTables –arm_common_tables.c文件提供位翻转或相关参数表。
  • ComplexMathFunctions –复杂数学功能,如向量处理,求模运算的。
  • ControllerFunctions –控制功能函数。包括正弦余弦,PID电机控制,矢量Clarke变换,矢量Clarke逆变换等。
  • astMathFunctions –快速数学功能函数。提供了一种快速的近似正弦,余弦和平方根等相比CMSIS计算库要快的数学函数。
  • ilteringFunctions –滤波函数功能,主要为FIR和LMS(最小均方根)等滤波函数。
  • MatrixFunctions –矩阵处理函数。包括矩阵加法、矩阵初始化、矩阵反、矩阵乘法、矩阵规模、矩阵减法、矩阵转置等函数。
  • StatisticsFunctions –统计功能函数。如求平均值、最大值、最小值、计算均方根RMS、计算方差/标准差等。
  • SupportFunctions –支持功能函数,如数据拷贝,Q格式和浮点格式相互转换,Q任意格式相互转换。
  • TransformFunctions –变换功能。包括复数FFT(CFFT)/复数FFT逆运算(CIFFT)、实数FFT(RFFT)/实数FFT逆运算(RIFFT)、和DCT(离散余弦变换)和配套的初始化函数。

2、DSP库的添加

①.在工程中选中DSP库,并添加。 ST提供了.lib格式的文件,方便使用这些库。这些.lib文件就是由Source文件夹下的源码编译生成的,如果想看某个函数的源码,可以在:工程文件夹 → Drivers → CMSIS → DSP → Source文件夹下面查找。

.lib格式文件路径:工程文件夹 → Drivers → CMSIS → Lib。共有四个文件,其中:

arm_cortexM4bf_math.lib(浮点Cortex-M4大端模式)

arm_cortexM4lf_math.lib(浮点Cortex-M4小端模式)

STM32F4的内核CortexM4F采用小端模式,所以选择:arm_cortexM4lf_math.lib(浮点Cortex-M4小端模式)。

在这里插入图片描述
②.添加头文件:路径:工程文件夹 → Drivers → CMSIS → DSP → Include

在这里插入图片描述
③.编译,DSP库环境搭建成功,可以调用相关函数进行数字信号处理。

stm32cubemx stm32f4之 使能 硬件fpu使用dsp 测试结果(详细)
dawm的博客
08-26 2714
stm32cubemx新建完成的stm32f4系列的工程 这里应该是默认开启的 可见 使能硬件fpu 未开启,为灰色 查看定义可见 可以发现这两个 没有进行定义 于是加入宏定义 点ok ,重新编译 可见开启了 硬件fpu 加在需要使用的文件里面 我直接加在main.h 里 板子没到,还没测试,但应该无内鬼 ...
STM32F4芯片固件STM32F4xx-DSP-StdPeriph-Lib-V1.8.0)
10-13
STM32F4芯片固件STM32F4xx_DSP_StdPeriph_Lib_V1.8.0)是ST官方提供的开发资源,它包含了数字信号处理(DSP)功能和标准外设,旨在简化基于STM32F4的嵌入式应用开发。 固件主要由以下几部分组成: 1. **...
STM32CubeMX搭建STM32H743开启FPU计算FFT1024点FFT耗时300us带FFT和相关支持完整例程
06-01
我看全网没有纯净简单的FFT验证例程,因此参考安富莱V7开发板FFT教程,用STM32CubeMX搭建STM32H743开启FPU计算FFT1024点FFT耗时300us带FFT和相关支持完整例程。STM32CubeMX源文件也在附件中,可以查看和学习相关配置。代码使用定时器计算实时FFT运算时间,非常精准。可以通过串口查看FFT的运算时间和自动运算出来的结果。STM32H743开启FPU进行硬件加速的双精度浮点运算,一次1024点FFT只需要300us,非常快速,还有提升空间,大家可以继续优化。
stm32f407-DSP-FPU使用帮助
最新发布
yangyggggg的博客
07-16 281
预先在ST官网下载好DSP,找到arm_cortexM4lf_math.lib文件,并建立路径添加至工程,其余配置和测试同上。通过CUBEMX生成stm32f407程序,默认开启了FPU功能,在stm32f407xx.h文件中。一定要确定lib文件不能错!Define中添加ARM_MATH_CM4。一、通过STM32CUBEMX添加。一、通过STM32CUBEMX.2.生成代码,用keil5打开。4.在程序中包含头文件并测试。编译并检查,至此配置完成。C99 Mode 勾选。
STM32F4+CubeMX+Hal下使能FPU
jaysur的博客
10-05 6262
STM32F4相比于F103系列的一个巨大优势是带硬件浮点单元FPU。我看网上有非常多关于在STM32CubeMX进行配置后使能FPU的一些操作方法,但是总感觉说的不到位。 我们的原则是: 尽量不破坏CubeMX自动生成的代码!也就是下次再次使用CubeMX生成代码时不需要再次瞎捣鼓一番来使能FPU! 在这里,重新帮大家捋一遍。 在STM32CubeMX生成工程后,在Keil中打开工程,首先确认配置界面Target选项卡中的Floating Point Hardware为Single Prec
STM32 HAL CUBEMX FPUDSP 使用
yuleitao的博客
04-19 1万+
FPU 简介 FPU 即浮点运算单元(Float Point Unit)。浮点运算,对于定点 CPU(没有 FPU 的 CPU)来说必须要按照IEEE-754 标准的算法来完成运算,是相当耗费时间的。而对于有 FPU 的 CPU来说,浮点运算则只是几条指令的事情,速度相当快。 STM32F4 属于 Cortex M4F 架构,带有 32 位单精度硬件 FPU,支持浮点指令集,相对于 Corte...
STM32F4+CubeMX使能FPU(编译器V6)
weixin_45642284的博客
11-09 694
基于STM32F4+CubeMX和编译器V6开启FPU(浮点运算单元)
STM32+Keilv6+cubemx进行FPU运算
m0_55905009的博客
03-16 546
选择DSP Library 下载DSP Library,此步非常重要,若没有此步,cubemx不会生成arm_cortexM4lf_math.lib。点击ok,选择如图所示的位置,勾选DSP Library,此时就可以生成代码了。选择show or hide the filter panel。单片机型号:stm32f407zgt6。选择select components。打开魔术棒,添加以下定义。2.keilv6配置。
stm32霍尔(hal)的FPU开启
qq_26972441的博客
11-12 2365
1、与其全网络搜索,不如仔细看看代码。 SystemInit()中的看清楚有没有,或者有没有被屏蔽掉。大多数FPU是默认关闭的,也就是被屏蔽掉了,解决的办法就是在魔法棒的c/c++中添加宏定义 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #.
stm32f4xx_dsp_stdperiph_lib_um
07-11
STM32F4xx_DSP_StdPeriph_Lib_um》用户手册详细介绍了这些使用方法、示例代码和API函数的参数解释,是开发STM32F4系列产品的必备参考资料。通过学习和掌握这个,开发者可以快速搭建应用系统,提高开发效率,...
STM32F10x & F4xx_StdPeriph_Lib(固件
03-03
函数模板里面,直接操作寄存器,因为官方相关头文件有寄存器定义。 STM32F4xx_DSP_StdPeriph_Lib_V1.9.0 STM32F4xx_DSP_StdPeriph_Lib_V1.4.0 STM32F10x_StdPeriph_Lib_V3.6.0
STM32F4-浮点DSPMDK开发环境的设置
07-31
### STM32F4-浮点DSPMDK开发环境设置详解 #### 一、引言 STM32F4系列微控制器以其高性能、低功耗的特点在嵌入式领域有着广泛的应用。该系列MCU集成了浮点单元(FPU),支持高速的浮点运算,这对于数字信号处理...
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0.zip
07-26
STM32F4xx_DSP_StdPeriph_Lib_V1.4.0.zip 是一个针对STM32F4系列微控制器的数字信号处理(DSP)和标准外设的压缩包。这个是STMicroelectronics公司为开发者提供的,旨在简化STM32F4设备的软件开发过程,提供了一...
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0.rar
01-14
STM32F4xx_DSP_StdPeriph_Lib_V1.8.0 是一款专为STM32F4系列微控制器设计的数字信号处理(DSP)和标准外设。这个是开发基于STM32F4芯片应用的重要工具,它包含了大量的驱动程序,可以帮助开发者轻松地访问和控制...
STM32FPU的启用和基于ARM-DSP函数的实时信号RMS计算
模拟信号链相关的学习与记录
05-05 2745
最近,由于项目需要,学习了一下F4的FPU浮点数运算单元的使用方法和DSP函数的建立使用,在此简单总结记录。
STM32 HAL CUBEMX FPUDSP
我的blog屋
09-28 6193
转自:https://blog.csdn.net/yuleitao/article/details/105621492?ivk_sa=1024320u FPU 简介 FPU 即浮点运算单元(Float Point Unit)。浮点运算,对于定点 CPU(没有 FPU 的 CPU)来说必须要按照IEEE-754 标准的算法来完成运算,是相当耗费时间的。而对于有 FPU 的 CPU来说,浮点运算则只是几条指令的事情,速度相当快。STM32F4 属于 Cortex M4F 架构,带有 32 位单精度硬件
STM32STM32F4调用DSP实现FFT运算
热门推荐
m0_46681107的博客
03-12 2万+
使用STM32F4的DSP实现FFT运算
STM32F4学习笔记1——如何使用DSP
积跬步以至千里
11-10 1万+
配置 1、 安装DSP文件 2、 配置编译环境, 上述添加是在project→options→C/C++→Define中添加,并且分割用逗号,即__FPU_PRESENT=1,__FPU_USED=1,ARM_MATH_CM4,__CC_ARM3、 在需要调用DSP函数的文件中加上#include "arm_math.h" 4、
写文章

热门文章

  • CubeMX生成的STM32F4xx MDK工程FPU和DSP库的使用 8056
  • MATLAB生成正弦码表 4842
  • EMI、EMS和EMC简述 3778
  • 电子设计常识——阻抗 3088
  • 从ST官网获取标准外设库以及官方例程 2831

分类专栏

  • 51单片机开发 2篇
  • STM32开发 2篇

最新评论

  • MATLAB生成正弦码表

    m0_65549273: 想问下作者,这个具体的值怎么计算,2048是什么

  • CubeMX生成的STM32F4xx MDK工程FPU和DSP库的使用

    酸奶可乐: 是真的能用

最新文章

  • 51单片机驱动——DS18B20
  • 51单片机驱动——LCD1602
  • MATLAB生成正弦码表
2021年2篇
2020年6篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家铜陵商场美陈石家庄玻璃钢动物雕塑报价太原玻璃钢仿铜雕塑松原小区玻璃钢雕塑厂家酒店玻璃钢卡通形象雕塑伊犁气球商场美陈装饰哪里有艺术玻璃钢雕塑厂家工厂淮安玻璃钢马雕塑设计晋城玻璃钢仿铜雕塑价格武汉步行街玻璃钢雕塑丰台区商场美陈装饰玻璃钢文字音符雕塑公司伊宁气球商场美陈商场主题创意商业美陈策划国外玻璃钢雕塑榆社县商场美陈玻璃钢卡通雕塑有毒吗广州玻璃钢雕塑出租湖北猪猪侠玻璃钢雕塑大型主题商场美陈报价春节商场橱窗美陈延边玻璃钢雕塑多少钱珠海玻璃钢动物雕塑墙面雕塑玻璃钢望城长沙玻璃钢雕塑品牌哪家好大型玻璃钢雕塑批发哪家好桐乡玻璃钢南瓜屋雕塑商场跨年美陈装饰达州玻璃钢仿真水果雕塑厂家美陈玻璃钢卡通雕塑价格合理香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化