电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

359

主题

364

帖子

2891

积分

三级会员

Rank: 3Rank: 3

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

bmkvcmwts1o6408164021.png

bmkvcmwts1o6408164021.png

0 y9 V" H# ]4 C6 o- w0 O, S# y- F" T" z* T# C! l1 q
只要STM32或者其他32位单片机,自带FPU功能,就可以加速float类型数据的加减乘除运算。' k6 N- l3 D- i8 r: Q6 ?8 R0 T3 T
7 `. o/ S) T$ t
在STM32中要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)( F. j3 E: \. V+ M- `

of5cvimgjfq6408164121.png

of5cvimgjfq6408164121.png
! @% v1 [2 V2 }" ?( ?& y/ d
/ \* k7 r3 a. m% I" w( T/ O2 t7 i
! {/ @" ^. U+ X0 a( C

qi05pt3rnux6408164221.png

qi05pt3rnux6408164221.png
& J: x" c1 d, `7 ]- ~0 ^; H
- p0 o' b) w% b$ Z) a8 S5 U
在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?" W' q% i% a8 ^
. z. ~/ |* ~1 ?2 l( O1 j( c8 \/ N1 T& ^
验证方法1:6 n! K9 p% f. B4 a4 D
运行单片机程序,不选中/选中FPU,分别做10万次乘法:发现耗时不同,则说明开启FPU成功了。
+ h% m# R* l; N! _* k' v2 U0 K# x& g8 C/ p# Y: ~  e: K4 T$ i8 f2 d% J1 n- N4 j; F) O3 k7 C
验证方法2:; U. o+ ~/ h6 _6 r+ O
3 F, M. n/ o* n3 V进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。/ e2 J: V# P9 k" |+ c" f% P
9 X6 f+ Q6 K: Q2 k+ M) d8 u0 x) ~1 M

mucxhii0h236408164321.png

mucxhii0h236408164321.png
; U" w+ U' i. R: n2 c. K
0 t4 B1 g5 o3 _8 o; M& W' P
" H3 s$ A) b) q. D8 N4 q
FPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ARM,ST,GD,APM等厂商提供了优化过的三角函数等,建议直接使用。6 W  N$ r( m4 T/ L; s) v; P2 ]
# N3 g) D4 ?0 c$ i- w
素材来源:ST官方
8 j$ b) D8 t/ b; d5 A; Y==========  O5 W) v9 F9 L2 R
往期回顾:【项目陪跑--无线CAN转发器】第一章 课程概述- N9 k$ H; u+ @
【通知】上市公司嵌入式工程师带队授课,成品展示~~8 V0 x+ W! {6 Q7 |$ j& S8 I
蓝桥杯物联网教程汇总_240529
8 X: O2 p" Q4 l1 [1 q==========' j8 l6 a: `" I5 {* @! a
8 f5 ]% [3 F) L4 {: D3 \8 c

xj0ulia1pfc6408164421.png

xj0ulia1pfc6408164421.png

2 ^8 I. D9 p9 z% V. ?; }$ ?1 ?% P  b- |" s& Z6 k. Z

5hvc32ignze6408164522.png

5hvc32ignze6408164522.png

. w; E8 l8 @5 p2 d7 U; r' A6 d7 I# z* n  m: w5 P- W( B

bqu4xsjy5m36408164622.png

bqu4xsjy5m36408164622.png
回复

使用道具 举报

发表回复

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

本版积分规则


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