你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32开启浮点运算单元FPU与DSP运算库,附性能测试

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:29
STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。  o, l* r0 i- i: c8 q, H
2 Z0 z5 F2 z* n2 ^' f5 q
观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)' p2 h. R' X) y( y' O1 ~: }8 O# t
1 u9 f- [% G( [, y
20201127100037275.png

. h1 U0 A; @+ O+ k8 O3 k/ Z
# {; R; R3 z" G" b- G
20201127101348618.png
, @" K* u8 [& s  Y
+ y5 E9 D0 x8 ]8 ~! S
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?: |" z( w4 Q! O9 C$ V, q3 z
8 x- ?9 D$ ]- x
验证方法1:
) U* e3 ^$ @# w# [. K3 B+ y! Z! \
我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。3 ^  y+ e/ N* x9 u3 u

/ b3 X( V% a4 ]2 |) }( Q4 z验证方法2:0 B! E0 [4 e. X/ r3 }( m, ~
8 T& u/ \+ }- P/ F: Q$ D
进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。
3 \" b6 L( ?4 o$ ?# r( G6 o/ M
: o9 X0 O$ w+ p. a+ B
20201127101652406.png
6 f; f1 x. t3 f

- [  e) i" o9 P+ T. `2 ~* n
+ `5 I. a: R9 @FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数
& s, ?/ I- Z9 S  o9 C# u1 i6 r+ u* M+ Q1 X- \

* _1 j3 C2 Z5 f" k' M3 W1 j  Q! Z
$ s- T, t+ k5 x3 i4 r  ?
/ V! h) P  s) `% h6 Y
收藏 评论0 发布时间:2021-12-30 13:29

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版