当前位置:   article > 正文

STM32_arm_sin_f32和sin的区别

arm_sin_f32

目录

为什么会去关注这个问题?

结论


为什么会去关注这个问题?

FOC控制中会用到三角函数

调试通信的时候,也会用三角函数产生一个测试波形

优化三角函数的运行时间是一个不可避免的事情,而幸运的是,前人已经把树种上了。

用专用的浮点运算单元FPU来做浮点运算,比用STM32本身来做浮点运算要快。

要使用STM32,ST公司提供了标准外设库、HAL库等。

而要使用FPU,ARM/ST公司提供的库叫做 DSP库

STM32 HAL库 CUBEMX FPU 和 DSP库朽木白露的博客-CSDN博客hal库dsp 这篇博客可以好好看看。

FPU简介

  • FPU 即浮点运算单元(Float Point Unit)。浮点运算,对于定点 CPU(没有 FPU 的 CPU)来说必须要按照IEEE-754 标准的算法来完成运算,是相当耗费时间的。而对于有 FPU 的 CPU来说,浮点运算则只是几条指令的事情,速度相当快。

  • STM32F4 属于 Cortex M4F 架构,带有 32 位单精度硬件 FPU,支持浮点指令集,相对于 Cortex M0 和Cortex M3 等,高出数十倍甚至上百倍的运算性能。 STM32F4 硬件上要开启 FPU是很简单的,通过一个叫:协处理器控制寄存器(CPACR)的寄存器设置即可开启 STM32F4 的硬件 FPU。

简单来说,FPU是集成在STM32F4系列以上的一个专用浮点运算处理器,相当于我们电脑中专门用于处理图像计算的GPU,在处理浮点运算时,速度比CPU处理要快几十倍,是一种专用型的处理单元。在STM32 F4系列中,带有该单元,我们只需要设置 CPACR 寄存器即可。

DSP简介

  • STM32F405 采用 Cortex-M4 内核,相比 Cortex-M3 系列除了内置硬件 FPU 单元,在数字信号处理方面还增加了DSP 指令集,支持诸如单周期乘加指令(MAC),优化的单指令多数据指令(SIMD),饱和算数等多种数字信号处理指令集。相比Cortex-M3,Cortex-M4 在数字信号处理能力方面得到了大大的提升。Cortex-M4 执行所有的 DSP指令集都可以在单周期内完成,而 Cortex-M3 需要多个指令和多个周期才能完成同样的功能。

DSP (数字信号处理),FPU是硬件,ST提供了FPU的库叫做DSP库,用于FPU的使用。DSP库之于FPU就如同 HAL库 之于 STM32 一样,是ST公司为硬件所开发的软件库。

实验:

在168MHz主频的STM32F405RGT6中,运行一次sin函数大约需要30~50us,运行一次arm_sin_f32函数,

只需要3us。 运行时间是1个数量级差距。

结论

用arm_sin_f32吧! 咋用看我另一篇博客

STM32_如何添加DSP库_heqiunong的博客-CSDN博客_stm32 添加dsp库

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/454627
推荐阅读
相关标签
  

闽ICP备14008679号