电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

397

主题

397

帖子

2463

积分

三级会员

Rank: 3Rank: 3

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

sgfj3rcqlpr6404974817.png

sgfj3rcqlpr6404974817.png

; Y9 T, d8 I' \% _; {) g! h5 h) k' N$ u) u
只要STM32或者其他32位单片机,自带FPU功能,就可以加速float类型数据的加减乘除运算。( @1 t( C5 o/ h  @, E
2 \( ^3 ^. ~$ J: a5 I
在STM32中要启用FPU,需要启动满足两个宏:(__FPU_PRESENT == 1) && (__FPU_USED == 1)
$ g, w! j% G% R; {5 i

jneq4dn3rhf6404974918.png

jneq4dn3rhf6404974918.png

8 k+ z( m1 l1 \! {) I$ G, J* L( d: D& Z/ X6 o
. u9 [$ r' m" p' K& e- g

yyp4q3za1ya6404975018.png

yyp4q3za1ya6404975018.png

6 ^5 o. O' r6 O& a3 K  A: s+ c  [
% x1 y0 P4 F/ u' x; ?在keil的魔术棒中,如上图所示,直接选中单精度浮点运算器,keil就会自动把所需的宏给定义出来。如何验证是否开启成功?
3 R4 B4 d+ v3 V# l- _0 g1 {  K. z. ~/ |* ~1 ?
9 [1 n; D" h2 k1 g+ b) ~( |验证方法1:" g  Y" j% i/ ~: v
运行单片机程序,不选中/选中FPU,分别做10万次乘法:发现耗时不同,则说明开启FPU成功了。
3 o8 o" ^/ x6 ~6 P0 S- {) H9 }/ x0 v# x& g8 C/ p# Y: ~  e: K4 T
0 P; D3 `  k( B# E% L& w: x验证方法2:; U. o+ ~/ h6 _6 r+ O2 l( \1 ]+ ~/ O
进入debug模式,或者直接查看汇编文件,发现C语言乘法运算,被编译成了V打头的汇编乘法命令,说明开启成功。/ e2 J: V# P9 k" |+ c" f% P
5 k& |/ o( A2 k. v; p* G! i, Q
& S2 N! f8 a! F

guohcsxzuvw6404975118.png

guohcsxzuvw6404975118.png
3 h: k0 b" S( ^2 L9 X2 q6 D& h- }* R
5 x& C6 R1 _2 K

* D0 C' {" P9 N& j: L4 n6 lFPU只能加速float的基本运算,还有一些数学函数,不是光靠FPU就能加速的,例如sin、cos、等函数,ARM,ST,GD,APM等厂商提供了优化过的三角函数等,建议直接使用。7 U& u; {6 z+ ~1 B

$ B/ \  ?$ @4 R; L' [# p6 c* v7 N素材来源:ST官方& A& h6 L- Q0 z4 x& }
==========/ U9 n2 z8 ]) k( x) X( Y6 Y; b! R
往期回顾:【项目陪跑--无线CAN转发器】第一章 课程概述( ?7 v- H# a: ?  s* v0 q- t/ ?3 _. J# M
【通知】上市公司嵌入式工程师带队授课,成品展示~~
  c8 g* U& n0 u0 q$ G蓝桥杯物联网教程汇总_240529
) A8 R' d# z4 p3 F) T1 l==========* @/ {; X3 j# W

% `0 [$ Q1 h& r; X0 j

qa1aqpssizv6404975218.png

qa1aqpssizv6404975218.png
6 K' _  G9 ^# J0 t' Z; A
! @4 j1 D0 B. `3 o3 V, b6 ~/ A

vcclcucgpej6404975318.png

vcclcucgpej6404975318.png

4 T) o& P9 C( }9 F
9 W* J; }( t) |. F

5xkpp5rrwu56404975418.png

5xkpp5rrwu56404975418.png
回复

使用道具 举报

发表回复

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

本版积分规则


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