文章目录

  • 1. 浮点运算单元(FPU)
    • 1.1 所用硬件
    • 1.2 配置FPU
  • 2. CMSIS-DSP
    • 2.1 添加DSP库
    • 2.2 测试

====>>> 文章汇总(有代码汇总) <<<====

1. 浮点运算单元(FPU)

针对M4往上内核的芯片都具有FPU浮点运算单元。可以加快浮点数的运算速度。

1.1 所用硬件

硬件:STM32F401CCU6系统板(淘宝十几块钱一个系统板)。
软件:CubeMX、Keil(5.38,建议使用新版本的,对于宏定义没有的部分会有灰色提示)。

1.2 配置FPU

首先打开system_stm32f4xx.c可以看到,在系统初始化函数中,需要有

  1. __FPU_PRESENT == 1
  2. __FPU_USED ==1

需要有这两个定义才可以配置。

而在这个文件中引用了头文件:stm32f4xx.h

stm32f4xx.h中引用了stm32f401xc.h

stm32f401xc.h中已经对 __FPU_PRESENT == 1 定义过了。

然后就差 __FPU_USED ==1 了。
打开core_cm4.h,可以看到,默认 __FPU_USED 是为0的。
显然,这里是因为没有定义 __TARGET_FPU_VFP,所以下面的没有打开。

因此,定义上就可以了。点击魔术棒,添加上如下定义:,__TARGET_FPU_VFP。(注意:是有个逗号和前面分开的)。然后点OK。
如果有的是因为 __CC_ARM 没有定义的话, 那就也添加上去就好了。

然后再次看就发现,__FPU_PRESENT == 1前面不是已经有了吗,为什么这里还是灰色的。
那是因为在这个文件中并没有包含定义__FPU_PRESENT的文件。

解决方法1(修改文件的方法都不建议):在这个文件中引用 定义有__FPU_PRESENT的文件。如下图。

解决方法2:把__FPU_PRESENT=1U在这里再添加一次。
注意是1U 不是1,如果写成1,就和stm32f401cx.h中定义的不一样,会报很多重定义警告。

此时再看。浮点运算就配置好了。

最后,勾选上使用单精度硬件浮点运算即可。

2. CMSIS-DSP

2.1 添加DSP库

两种方法
第一种:直接下载源码,放到工程文件夹,并且添加头文件路径。
第二种:CubeMX添加。

这里用第二种(多方便)

在生成工程页面选择。

勾选上之后点击OK。

勾选上之后,生成工程。

打开工程可以看到,已经添加好了。

此时,在main.c文件中,添加#include “arm_math.h”,然后编译会报错。

这是因为在arm_math.h中会根据内核类型引用不同的文件。因此这里需要定义内核。


解决:根据自己的内核添加即可。这里是M4的。

此时再次编译,就没有报错了。

2.2 测试

在主函数中添加代码,在调试窗口可以看到.F32。

可以在官网看到所有的函数及解释说明

====>官网地址<====

STM32浮点运算单元(FPU)和DSP库使用相关推荐

  1. 关于STM32浮点运算单元FPU的小话题

    有人利用STM32芯片做些DSP处理,在启用FPU单元进行调试.验证过程中可能会遇到些小问题.小困惑,这里通过STM32F4芯片一个具体的应用示例简单分享下,希望顺便能给同仁提供些帮助或提醒. 我这里 ...

  2. STM32开启浮点运算单元FPU与DSP运算库,附性能测试

    STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算. 观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1 ...

  3. STM32 HAL库 CUBEMX FPU 和 DSP库

    转自:https://blog.csdn.net/yuleitao/article/details/105621492?ivk_sa=1024320u FPU 简介 FPU 即浮点运算单元(Float ...

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

    CubeMX生成的STM32F4xx MDK工程FPU和DSP库的使用 STM32F4xx属于Cortex M4F架构,带有32位的单精度硬件FPU(Float Point Unit),支持浮点指令集 ...

  5. 浮点运算单元FPU能给电机控制带来什么?

    编者按:在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的程序时,有三种方式可以执行:软件仿真器(浮点运算函数库).附加浮点运算器和集成浮点运算单元.在控制应 ...

  6. STM32F4 FPU和DSP库使用

    参考网页: http://blog.csdn.net/electrocrazy/article/details/73456697 STM32F4xx属于Cortex M4F架构,带有32位的单精度硬件 ...

  7. STM32F4xx FPU和DSP库的使用

    STM32F4xx属于Cortex M4F架构,带有32位的单精度硬件FPU(Float Point Unit),支持浮点指令集,相对比M0和M3架构,浮点运算性能高出数十倍甚至上百倍.CortexT ...

  8. fpu测试_浮点运算单元FPU能给电机控制带来什么?

    编者按:在计算领域,例如三角函数以及时域频域变换通常会用到浮点运算.当CPU执行一个需要浮点数运算的程序时,有三种方式可以执行:软件仿真器(浮点运算函数库).附加浮点运算器和集成浮点运算单元.在控制应 ...

  9. MDK AC6开启FPU移植DSP库时报错Error: L6242E: Cannot link object arm_cos_f32.o as its attributes are incompat

    报错 我在keil mdk中使用AC6作为编译器,在给f4移植dsp库时报错,照网上教程配置好了,编译后报错 Error: L6242E: Cannot link object arm_common_ ...

最新文章

  1. Node.js express 之mongoose 从异步回调函数返回值,类似于同步
  2. mysql空表不导出问题_解决Oracle 11g空表无法导出的问题
  3. Web前端基础——HTML
  4. Tiny Core Linux 4.5 发布,微型 Linux 操作系统
  5. 关于tomcat启动失败的一个原因
  6. TD数量不确定时如何让其宽度平均分布
  7. linux下实现对多个文件去重软件,Linux下大文件的排序和去重复
  8. 17、SpringBoot------整合dubbo
  9. 在Chrome浏览器添加IDM插件——顽强版
  10. WX系列无线漫游的配置
  11. 人机交互中的情境认知
  12. 机器学习_深度学习毕设题目汇总——图像分类
  13. mysql通配符_MySQL中的通配符
  14. HostGator 評價 – 優異的運行時間與支持一鍵安裝 WordPress,內含 4 折 60% 折扣優惠購買連結! - TechMoon 科技月球...
  15. aisell_EasyPOI 数据导入导出
  16. ConcurrentHashMap是如何保证线程安全的?
  17. 如何安装cnpm和检查cnpm是否已经安装成功
  18. wow达拉然发礼物机器人_《魔兽世界》“彩虹生成器”获取方法以及达拉然点击就送玩具!...
  19. Tanya出了新碟,这让我想起来了高中时听她的记念
  20. 做了个面试题:使用TDD思想,用vue3集成自己手写的event bus。

热门文章

  1. 如何写出好的Case
  2. 苹果平板电脑:显示已停用;怎么样打开
  3. excel里面时间加减
  4. 郑州轻工业大学ACM(zzuli OJ 54)
  5. 孝经白话:三才章第七
  6. ixgbe网卡驱动(一)
  7. “又一家公司取消大小周,薪资总额竟不变?”
  8. android java 启用4g_android下4G上网卡
  9. 【小技巧】在Finder当前路径(目录)中打开终端
  10. 如何成为一个好的IT培训老师