电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

359

主题

364

帖子

2891

积分

三级会员

Rank: 3Rank: 3

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

ekxcf0ptc1v6402146440.png

ekxcf0ptc1v6402146440.png

* v7 d" u% Z9 w+ H9 @
6 r# M/ U% k7 |* t2 n只要STM32或者其他32位单片机,自带FPU功能,就可以加速float类型数据的加减乘除运算。
! M& R+ {+ W0 e6 [5 S8 ?3 o
+ @7 m& Y8 a; u' @$ t( n' \  `) l$ Z在STM32中要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)/ M8 d" C# }8 U) p! V

qp032uxadyq6402146540.png

qp032uxadyq6402146540.png
6 X; g* L* r: j% A' _! J, s

( N$ I/ Y( I) c7 U6 ~" |: b& z, G! ?- l1 e: d, U/ k

rknwx0ygeis6402146640.png

rknwx0ygeis6402146640.png
6 @8 H" S7 d$ t- o  y
# s& ^6 p: D! b5 z# r5 D6 m
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?
$ x! ]7 H+ f3 W5 ?. z. ~/ |* ~1 ?/ X! K, [) O, K5 f( n3 j
验证方法1:+ o7 {' g; x  f, d" V/ \/ f9 P
运行单片机程序,不选中/选中FPU,分别做10万次乘法:发现耗时不同,则说明开启FPU成功了。
) J7 |  _! _7 a7 e# x& g8 C/ p# Y: ~  e: K4 T
. l5 Y$ a( z6 ~" t# A1 i8 k" o. |验证方法2:; U. o+ ~/ h6 _6 r+ O
. D0 S% X$ O: ]1 E# }8 V进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。/ e2 J: V# P9 k" |+ c" f% P
+ l* Q+ I. N" G( Z" V7 ]# m/ l% h" C& z4 D( |& Z5 {  R( K

uu20faqkaew6402146740.png

uu20faqkaew6402146740.png
* `4 ~; ?7 c. [% T

% [) X  m8 d4 W: E* Y; k& j, ~; r9 z1 s' H  ?* ~# G& x
FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ARM,ST,GD,APM等厂商提供了优化过的三角函数等,建议直接使用。
" }5 R) z. J2 w4 q! T, H! X. S& B- ^3 g0 s
素材来源:ST官方
5 Y6 ~' `8 _( X) t- ^==========
: ~) r- B: f4 Y' K4 P往期回顾:【项目陪跑--无线CAN转发器】第一章 课程概述( f, U4 u6 `% t+ r! L4 q
【通知】上市公司嵌入式工程师带队授课,成品展示~~7 B) [+ u6 g7 I( q' ?5 E2 o
蓝桥杯物联网教程汇总_240529( U! @1 I# `) F& i
==========# a1 f. ]. C; Q
% I& d4 J3 w6 |5 c

tqaf1oovwai6402146840.png

tqaf1oovwai6402146840.png
, V0 ~- z7 M4 c* e1 f

8 p, G+ U0 C, C8 H  a! Y! H# t

3augfpe3pgf6402146940.png

3augfpe3pgf6402146940.png
3 x. I& a) a! V2 ^& N7 D

$ m" b7 v! ?6 Y. l- U# @

5gvvz2ghhko6402147040.png

5gvvz2ghhko6402147040.png
回复

使用道具 举报

发表回复

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

本版积分规则


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