电子产业一站式赋能平台

PCB联盟网

搜索
查看: 145|回复: 0
收起左侧

如何提高单片机的运算效率之FPU

[复制链接]

397

主题

397

帖子

2463

积分

三级会员

Rank: 3Rank: 3

积分
2463
发表于 2024-8-14 21:00:00 | 显示全部楼层 |阅读模式

bsflphorwiw6408181513.png

bsflphorwiw6408181513.png
( U8 J6 ]0 t& c; H1 _) f% v2 _/ @

9 R- y( Y6 u+ G7 H& S" j5 v2 ?只要STM32或者其他32位单片机,自带FPU功能,就可以加速float类型数据的加减乘除运算。* S! ]9 m$ f1 X% _
2 |, Q5 f0 r5 A- m
在STM32中要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)
: w" b+ M5 E/ I) z0 |

2guwqbbz5xa6408181613.png

2guwqbbz5xa6408181613.png
. ^" S0 c: c$ ~# |; H( W- J

$ o+ M; V$ S- W+ M: S- f/ s4 k& C, @7 L+ [  Y/ m

x3lbpncpybu6408181713.png

x3lbpncpybu6408181713.png
. x: Z2 E; Z: [
- v1 j( z: \* m8 Q( ]3 F8 G
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?
/ {% d* F& k  u2 z0 m3 u! c4 l. z. ~/ |* ~1 ?
# b# j# l: q- j$ n4 X0 w) {7 s验证方法1:
7 X$ K1 K/ F* E6 r/ F& m9 Q运行单片机程序,不选中/选中FPU,分别做10万次乘法:发现耗时不同,则说明开启FPU成功了。
$ X+ M# ^( _- Z/ c  ~+ S# x& g8 C/ p# Y: ~  e: K4 T, v: j/ j1 s& S1 b% k* t
验证方法2:; U. o+ ~/ h6 _6 r+ O
- H& z) w% L9 K, f$ x进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。/ e2 J: V# P9 k" |+ c" f% P
* \' X1 S7 ?: `4 ?5 X
7 r) F6 m7 V! y8 E7 \! z

xlruqlgjhpl6408181813.png

xlruqlgjhpl6408181813.png
5 h# s1 h( e! v' ?+ K+ d! E

/ S8 ~) [$ M0 }/ T; u; m+ C- x5 Y
! M3 R( \' k+ oFPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ARM,ST,GD,APM等厂商提供了优化过的三角函数等,建议直接使用。
" L7 Y* O, e4 {% O+ M: Y! Z. `4 m& |& {* V  ?' E
素材来源:ST官方0 |0 |& k( H' O; v5 P
==========* n; b4 V# V) l0 N8 _; L
往期回顾:【项目陪跑--无线CAN转发器】第一章 课程概述
$ p- c8 u; v/ o! b5 B6 {8 e5 ^% I  r- Q【通知】上市公司嵌入式工程师带队授课,成品展示~~/ u1 I0 y/ a' t0 Q0 K
蓝桥杯物联网教程汇总_2405298 o* d( k  d) D' h5 r) q/ c- Q
==========
6 _9 u: K$ S. Z1 B' w
( o9 z" u8 e* ]

dvhnjmjf41n6408181913.png

dvhnjmjf41n6408181913.png
7 l! a6 n5 R# j

. Y. D6 w. u8 f3 \" g+ Z( Y

usmqedaab2x6408182013.png

usmqedaab2x6408182013.png

( V  a& N: [6 ]$ a% v$ }! Q3 J( I* ]/ B2 ^6 v! T- \

htgufdncaxl6408182113.png

htgufdncaxl6408182113.png
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表