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

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

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:29
STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。
0 w  \2 o  S+ R" k5 e: ]$ S1 R2 q
观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)
! P& X9 |# h/ }, I; m
# v4 Y/ w! V% c/ M5 T  D2 p  O
20201127100037275.png

1 Q' R* E' g  E8 w  J) k( f* F/ L4 m* C
20201127101348618.png

: h, v4 y2 X6 \' I6 C5 l! f$ g+ }  A, n% A
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?- q8 R1 g3 Z0 x+ I$ C1 ]
2 m  p) v& S3 ^+ I* v5 a6 t1 F) h
验证方法1:$ O! R/ a* u5 p+ A+ s/ x6 e/ y& u

9 m, {$ ~, X) S# R( @' T% b( q我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。
0 J% H5 O' M; I* a1 j
. a- O. Z9 ^* \/ S. _验证方法2:
7 G7 m; A1 P& Y2 T0 {# V( H' l1 G9 B' O3 V
进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。6 H6 E  ~6 D9 G) j( d. P+ W

5 S' {+ k0 U/ u6 G# a& [
20201127101652406.png
$ V2 O, x( @  `
5 Z0 G( S. b. B0 E- H) x
  A% r5 K9 g0 z% C5 C# I' u
FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数
% ?0 i; X9 A3 Q7 N: _, i# ^8 B; Y3 n, K; u# z, w
- h/ g$ G* e& N2 c6 H; s
5 w: Q) m4 p% G/ t5 f* [3 j1 y  F" Z
# h$ {% ^9 u6 J) V3 s- l/ v) ^
收藏 评论0 发布时间:2021-12-30 13:29

举报

0个回答

所属标签

相似技术帖

官网相关资源

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