电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

359

主题

364

帖子

2891

积分

三级会员

Rank: 3Rank: 3

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

sv31doct23v6402553138.png

sv31doct23v6402553138.png

3 |7 \+ A8 ?/ o- @: I) l
0 d, l6 X5 X, {只要STM32或者其他32位单片机,自带FPU功能,就可以加速float类型数据的加减乘除运算。
; j. }/ N) E6 g# K5 k. k4 z
9 W: Y" s, @& {  G$ I/ ^0 H在STM32中要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)
! n" A6 `& k4 P8 w5 o( a

gyjlcqlqrii6402553238.png

gyjlcqlqrii6402553238.png

: [$ q1 j/ d8 x* }9 Y0 ]
5 @& ^% L; ^" T9 _; z6 ~8 d% X/ a# h

1utiqwx1e5v6402553338.png

1utiqwx1e5v6402553338.png

/ u# [" B4 k2 @) C7 m
, W4 E3 f, Y( R* p: B6 z6 y6 u0 [( ~在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?
2 j" y( H1 B3 Q+ T. z. ~/ |* ~1 ?
% E7 b5 B- v; J验证方法1:" V8 v! o. K: p: G# o' U, `
运行单片机程序,不选中/选中FPU,分别做10万次乘法:发现耗时不同,则说明开启FPU成功了。8 Q8 r9 ?: |! \- M8 w) c& v/ Q
# x& g8 C/ p# Y: ~  e: K4 T5 X( p6 {8 P3 u! R3 ?4 x% M
验证方法2:; U. o+ ~/ h6 _6 r+ O
9 V7 N8 i! w4 f6 k  O2 N  Q8 x进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。/ e2 J: V# P9 k" |+ c" f% P
/ P% k2 E9 x: @8 k: {1 @" U0 V' r9 i- p5 y2 @! A0 G% C, v" f& @! H

bpoh4lbu1fe6402553438.png

bpoh4lbu1fe6402553438.png

; S" q6 r& O- t0 [
0 e) S* K3 W. K" ^0 x) g

9 M& Y, C7 F" J1 q# j# {* Z/ IFPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ARM,ST,GD,APM等厂商提供了优化过的三角函数等,建议直接使用。% W. v% Y7 z7 k& V8 V
  C0 ?/ z2 k% _: L0 N. b
素材来源:ST官方) `) r/ b( m( G7 `
==========9 J& v4 n  y2 Z! d% P3 l
往期回顾:【项目陪跑--无线CAN转发器】第一章 课程概述
# o1 ^2 `! u2 M【通知】上市公司嵌入式工程师带队授课,成品展示~~5 e, A! t% j2 [) P* `
蓝桥杯物联网教程汇总_240529
4 P6 B( E! ?2 O( |6 c==========
& Z+ b9 C" h$ ]8 @  K
5 T, a3 x6 B- s" [. w

xg0jmcl3ac26402553538.png

xg0jmcl3ac26402553538.png

/ p" E( d- q$ h* H3 a; I7 ]; Y/ f0 S
6 Q- p( Y8 ~, Q9 \! H; H

ukqvnzoffi06402553638.png

ukqvnzoffi06402553638.png
, k* `% g* I) ^
! e9 ]  Z- a+ t4 o, F! N4 q% A

filp0ozz1i36402553738.png

filp0ozz1i36402553738.png
回复

使用道具 举报

发表回复

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

本版积分规则


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