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

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

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:29
STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。' @. v1 G  ]! F* y

; n# s+ [6 u, p& G7 |# Z观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)
  A0 G$ J- J7 O5 {3 Q) N% m: ~$ v
* O4 I3 r6 e) R
20201127100037275.png
! k! `' s/ t1 R2 I- H/ Y) B

/ X3 f+ c4 V  R# w
20201127101348618.png
$ S* J" t1 ?4 P

5 Q/ T  c$ S  G5 @' J在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?* T0 |$ L2 E, g7 r+ q

$ ]  \$ x1 J; w) f2 O; A/ c/ {6 [验证方法1:
+ P8 Z$ p( O9 Y! l
" o3 H3 r& }* v) ~! L我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。
. D: n( K& n. i) B; }4 O, ?2 N+ c" o
验证方法2:
/ N4 \  p9 K4 W' v' y! f+ G' n8 S. W% H5 q- b7 B" N5 O/ b8 @
进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。$ {, t* a) F5 F, p6 {& Z3 O

" @) x% G4 _3 i8 z& }2 m: J. ^- M
20201127101652406.png
+ |( [. f, h+ j5 [5 R

! x7 d/ F* g0 _0 R5 x- l& e* ~& z  i+ f3 k
FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数
( C7 D& H2 Z8 x! v
4 M  m* A- E4 j9 W8 E
/ s! X. M3 g% o6 U
$ l6 j$ ^6 W6 S6 F. ~5 W# _
1 r9 l! B* J; s
收藏 评论0 发布时间:2021-12-30 13:29

举报

0个回答

所属标签

相似技术帖

官网相关资源

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