STM32_arm_sin_f32和sin的区别

目录

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

结论


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

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库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江湖上都叫我秋博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值