电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

359

主题

364

帖子

2891

积分

三级会员

Rank: 3Rank: 3

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

hp1o1hzytl16409897218.png

hp1o1hzytl16409897218.png

' x! W: N* S* M# C2 Y
7 q% R! J; d  m1 a: P& n6 c1 {只要STM32或者其他32位单片机,自带FPU功能,就可以加速float类型数据的加减乘除运算。2 w0 S" \% Q6 R% h& w* T
8 X" G; V; {* ~
在STM32中要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)4 C- o/ Z& U* }' M  L) K/ I5 ]2 W

yiqjkv2lddq6409897318.png

yiqjkv2lddq6409897318.png

6 K$ b5 q; W( t& F7 |; `9 L, s# u" y

3 t8 Q3 q% Q' R6 K

vdlicqozw0m6409897418.png

vdlicqozw0m6409897418.png

. D2 w: H$ e* K8 _
/ l. g3 }" i* J/ q1 X在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?% z. Q3 U( h0 v) ^% v6 M
. z. ~/ |* ~1 ?( j7 c8 u& S) o' B* j
验证方法1:1 D( c; `0 s% x0 G. O/ U3 B+ V
运行单片机程序,不选中/选中FPU,分别做10万次乘法:发现耗时不同,则说明开启FPU成功了。
: Z7 ]0 t8 K3 Y# x& g8 C/ p# Y: ~  e: K4 T
9 f# O* O' X' t' S2 ~0 Z" Q$ ?4 N验证方法2:; U. o+ ~/ h6 _6 r+ O
) a1 P  ~9 q9 J3 I5 S进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。/ e2 J: V# P9 k" |+ c" f% P. i$ ]* i. }5 M) l; ^! j
- ~7 o/ y) Y# X- P6 v8 {

qmaxyyve12h6409897518.png

qmaxyyve12h6409897518.png

) d# x* U" l. j

6 P5 s/ a9 l3 k
& ~" @9 Q% k+ u1 i7 A, m7 R/ f/ yFPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ARM,ST,GD,APM等厂商提供了优化过的三角函数等,建议直接使用。
+ `8 t9 s. M- P* a& s6 t' e* S0 k0 y0 P- P+ B
素材来源:ST官方0 {$ K) V  E* K" y7 v
==========
5 S( _% o+ U5 r3 {4 }  o' t往期回顾:【项目陪跑--无线CAN转发器】第一章 课程概述
9 q, {; I! G& z6 Y5 X# c【通知】上市公司嵌入式工程师带队授课,成品展示~~
* @# x$ o; B4 M/ s: ^: [蓝桥杯物联网教程汇总_240529
, h/ K. e" D5 h==========, n5 {5 k2 [, B$ T4 J2 s$ A

/ D4 a2 z6 i/ ^3 S! q

qmygarwcu3r6409897618.png

qmygarwcu3r6409897618.png

( N7 ?& N  P+ f4 |+ l. B8 k* r" [! ?8 r, J

ikuuz3bgdus6409897718.png

ikuuz3bgdus6409897718.png

, h$ e) }2 k" m% u7 R/ J- D# Z/ R1 u; b+ A

clfqfpqynnl6409897819.png

clfqfpqynnl6409897819.png
回复

使用道具 举报

发表回复

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

本版积分规则


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