电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

397

主题

397

帖子

2463

积分

三级会员

Rank: 3Rank: 3

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

o5btb5vdmcc64018365416.png

o5btb5vdmcc64018365416.png
7 k3 w9 o& S" B7 H# Z/ K0 n
# a% @: `! Y' i. z; B4 m) c0 X$ r
只要STM32或者其他32位单片机,自带FPU功能,就可以加速float类型数据的加减乘除运算。1 _' c2 v- B1 x' ]" y
, a  a9 b3 u* ?
在STM32中要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)
8 f  }( e5 y) O) J% _4 ?# _

0rlxgug1cry64018365516.png

0rlxgug1cry64018365516.png
7 Z9 |3 v7 `2 \  o, n5 u

2 ]; W# F% w) A
: Z8 i7 z3 j& f& o! G+ a

m05khd0qif364018365616.png

m05khd0qif364018365616.png
/ Q* H% r7 a! A% B6 w% d% |" c

; N" c. {5 o3 v/ h5 `$ ^在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?6 X) W; g8 p& b. m* W, N
. z. ~/ |* ~1 ?
; ]8 i! B$ ~1 _' |/ L验证方法1:5 [5 ~. k0 g4 P9 p* D
运行单片机程序,不选中/选中FPU,分别做10万次乘法:发现耗时不同,则说明开启FPU成功了。
* L* v) N/ I, f, ]3 M; j# x& g8 C/ p# Y: ~  e: K4 T6 p7 ^  {& z& I- l1 Q. y
验证方法2:; U. o+ ~/ h6 _6 r+ O
. B' n9 X- h; t7 T, ~进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。/ e2 J: V# P9 k" |+ c" f% P! P. K. Y6 g2 {" v0 N
5 y7 V- a) R9 Q

55f4qka0w2364018365716.png

55f4qka0w2364018365716.png
6 D7 T* W# i6 {

' l. _/ a9 k% k. I2 v1 w0 ^6 e- X$ s% \  ?: N
FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ARM,ST,GD,APM等厂商提供了优化过的三角函数等,建议直接使用。
; ^! ?! a. G% N- `, E) s/ p! L6 j' [% Z+ d7 u
素材来源:ST官方* l( c6 y6 N/ ?) i. C* I
==========4 F$ N# b7 {; R/ C* ^
往期回顾:【项目陪跑--无线CAN转发器】第一章 课程概述
$ s- C9 d5 d  M1 r3 g4 G6 ~【通知】上市公司嵌入式工程师带队授课,成品展示~~
/ F- I* E5 s+ s8 ]5 U蓝桥杯物联网教程汇总_2405299 W9 c% X3 C& `3 \- V) U. e
==========
  R: S  p* d. l: n! @2 X  w
# n# X+ V+ }' G1 R6 e# f

ps3hsn252qy64018365816.png

ps3hsn252qy64018365816.png
6 {2 o/ w$ s6 L' ^: q: e+ C# J
8 b; x! D5 ^7 b! h1 Y5 S6 r

kj54e1dy4q464018365916.png

kj54e1dy4q464018365916.png

" U! I1 C! z4 g* J2 Q7 |7 B% N; X. T  P. K5 U  s7 `2 l  `% A

wuy5mnkxscm64018366016.png

wuy5mnkxscm64018366016.png
回复

使用道具 举报

发表回复

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

本版积分规则


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