请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:29
STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。
9 a, f. N1 {% |6 L( Q* f& g$ Y- u. S3 C
观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)5 v0 [; K& P/ j
7 A$ }" H. S; @0 J- a$ r
20201127100037275.png
6 G: e; \$ J* L; B
. l) S, E* T- B" }9 Q5 C
20201127101348618.png

+ Q' q& n$ J" m! L# v( {' c( s6 L6 _* b$ w  R
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?6 U0 [' C' v3 u' e! P5 h
( F, J8 Q& Q) T  D$ a- `' i% Y
验证方法1:
, D( \5 {/ b1 m
2 W9 ?% _3 s! l: t我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。
# \  x6 q# x$ ^. t, A6 K3 O) l3 ]  o; P' |& p' o/ n
验证方法2:" I. o! T2 n; _* I- X* ~% r

) ^- u7 U" u/ g& C  d3 `6 o9 b( K进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。
! N- k9 E) o" g+ L/ k! e" l  y% b7 S
20201127101652406.png

0 v- v- a( s7 w# O) i' V: I8 f/ s6 G: n7 K/ L+ O/ O
% A3 j5 [9 v# {; k& L
FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数
. E' W- P' x$ u6 O* [/ `! E& n5 A/ }
) M# `0 h# ?' }7 t8 y; I
3 F) N6 \8 e* Z4 ~) p( m
5 E. p$ r% G6 C1 Y" {
收藏 评论0 发布时间:2021-12-30 13:29

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版