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

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

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:29
STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。3 L6 D% i2 W' T1 W9 E2 k
$ U- B' ]) M5 w% B+ o
观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)$ V6 p3 A& V  L$ q5 Z% l( u/ ?

7 C9 T9 O+ J1 b
20201127100037275.png
( Y: s4 e# T1 q" A2 Y% A
! g# ^' X% j0 W
20201127101348618.png
) D1 [1 i! _9 W/ P
. |4 ^$ {  N/ c9 B
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?
8 i+ g! x# P/ r+ [3 S2 A
6 o1 D5 I3 F- Z9 A  \- _验证方法1:' }* e" V: K* l. {+ w) E) U' o
! V4 \* t4 _. Q
我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。
3 k" d1 P# {; A6 |
. a9 D$ K3 c6 n4 `; \验证方法2:% h( j' E% X8 v, }' m: L; G: N
# }7 M5 X0 W2 {& e' j4 b
进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。
6 F( t, {9 s! @5 V7 a- \. s0 t  T+ v9 m; |( S
20201127101652406.png

  b3 H+ I' _8 e* O/ b+ S, J$ G9 |+ b( K. z+ @* F+ c- Y
& j# q! Q- u7 e: p, Q: c
FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数. C: Z$ h, o1 v/ o5 g

$ D5 t6 P* e& n+ W" k# Q* V6 |$ ]- V5 |/ F" n) v& T

% U1 {" ?* M. ]% ]/ [! ]% i3 ~9 [' u; E8 q% }
收藏 评论0 发布时间:2021-12-30 13:29

举报

0个回答

所属标签

相似分享

官网相关资源

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