电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

359

主题

364

帖子

2891

积分

三级会员

Rank: 3Rank: 3

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

udv2sbwjv5y64022959841.png

udv2sbwjv5y64022959841.png

1 c, _$ X- g) h" W/ J
" I8 W& G& w" J$ \5 h只要STM32或者其他32位单片机,自带FPU功能,就可以加速float类型数据的加减乘除运算。0 W- A& u( x8 ]
0 u! v: ?. L; k& ?7 t
在STM32中要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)) _' a1 G9 n* f/ ^

assaj32eyxe64022959941.png

assaj32eyxe64022959941.png
% ^$ R5 }: @4 m0 H5 P1 d

" ?; h$ ]' _  |% S/ V6 b; y9 P% [  R# p

w4wqt3lpx0364022960041.png

w4wqt3lpx0364022960041.png

% B. |; V6 V) q% q% V% ]
' H. s4 ?' R8 E" i( z  _在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?+ C+ I) V8 f" d" n$ h/ ]$ u
. z. ~/ |* ~1 ?
$ x' \, O  O# o7 C/ z验证方法1:7 {1 M- \" Y- `: L2 S8 z' U; v
运行单片机程序,不选中/选中FPU,分别做10万次乘法:发现耗时不同,则说明开启FPU成功了。# t- y( G* t. ]) o) n$ W1 y
# x& g8 C/ p# Y: ~  e: K4 T
- D3 d% N$ ~7 O验证方法2:; U. o+ ~/ h6 _6 r+ O
! Q' X% G5 q! a; A- C. ?9 R, I: N进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。/ e2 J: V# P9 k" |+ c" f% P
) }7 A# A1 L) v5 O( Z6 Z4 U9 w. M1 [0 Y

fnfnywhm4la64022960141.png

fnfnywhm4la64022960141.png

% c& n  u* q' [8 O/ a
# U2 N8 u1 h( T7 ]% c* H. H

  B, P1 \( e0 b% ]FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ARM,ST,GD,APM等厂商提供了优化过的三角函数等,建议直接使用。% M& F- R- O, a. c8 t
' {; W" \# i9 a1 J5 ~" E" W( i
素材来源:ST官方
" K. u8 M# g( C9 R5 p0 [==========
/ p4 l. D- M5 ^% ]; y% b8 }- J0 D往期回顾:【项目陪跑--无线CAN转发器】第一章 课程概述
. R. W# ?# }  V) H【通知】上市公司嵌入式工程师带队授课,成品展示~~
2 p; g/ ~6 x- M3 y( U1 n" l蓝桥杯物联网教程汇总_240529
  t$ b# I: e* o+ h/ U& x& M$ @==========0 j1 g, Z8 ?- d3 D3 d
3 O+ s, ~0 z! y& N

tb2ph4gyfmu64022960241.png

tb2ph4gyfmu64022960241.png

! O( x7 @; O0 M! ^0 k
+ P" Z5 F/ P/ F0 `! e* L# }

zsa4vh0vffk64022960341.png

zsa4vh0vffk64022960341.png
1 S* [" H3 [  M5 a
$ @5 r  o& Y3 C6 d$ X  R9 p0 P

bg0vpezctsr64022960441.png

bg0vpezctsr64022960441.png
回复

使用道具 举报

发表回复

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

本版积分规则


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