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

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

[复制链接]
STMCU小助手 发布时间:2021-12-30 13:29
STM32F4xx属于Cortex M4F架构,自带FPU硬件,可以加速float类型数据的加减乘除运算。
7 _9 f6 n; K3 \- F. T
- h9 d4 C( y8 @6 U: e观察启动文件,发现,要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)( ~* y( k4 i. A

# _4 Z) k% k: Q! g9 c- P
20201127100037275.png
: U* Q5 L. _4 q0 e0 x" v
0 ^8 `+ }/ W% i0 N
20201127101348618.png
) \* s* @! I8 h. I/ M3 G! h: y
' A0 W9 ~3 _% _! `0 z0 Q9 D4 {
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?* m! u* F" F8 k' b7 k4 \" U

* W+ T  x9 n/ x5 n3 {验证方法1:2 Q0 h- g5 f5 X" C% {
1 @' M& v! a0 X* N/ y) J
我们把F407主频设为168M,不选中/选中FPU,分别做10万次乘法:发现耗时分别为32153us、5954us,发现耗时缩短为1/6.性能提升显著,说明开启FPU成功了。
* G2 t# r! [5 B2 q* V4 C2 ?# O; K8 F
验证方法2:
$ h/ O; S, S8 l2 K) j4 b. A; E- P/ ~: I$ ?5 n" w
进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。
# K2 K4 ^3 c# v- j; p. s! c: O7 u/ Q- j
20201127101652406.png
: H! P, K2 p( m; j

9 p$ }9 d$ k) ?6 U( @2 _9 M
& M1 {9 G0 g2 K* ^% f' Q& X# `FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ST和ARM提供了优化过的三角函数等,使用插值方法加速运算,要想使用这些优化过的函数  ^2 _: J7 @7 g; ~. Z/ x

9 Z4 V# f3 _0 a$ }0 b  k
9 ^6 {) C3 b; O) y& y, ^% x/ ^
: B# E$ k1 a5 L, S
( n3 ~& g+ L0 b5 F
收藏 评论0 发布时间:2021-12-30 13:29

举报

0个回答

所属标签

相似分享

官网相关资源

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