你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Stm32F4XX开启FPU浮点运算

[复制链接]
STMCU小助手 发布时间:2022-12-28 17:00
Stm32F4XX和Stm32H7XX开启FPU浮点运算* e6 I2 S& |& [0 Q, r
#softvfp 软浮点
/ b' z, F' W3 H9 a: O5 }2 h$ A8 z#fpv5-d16 or fpv5-sp-d16 cortex-M7 单精度硬件浮点# x9 f0 K1 o2 [. C( R6 v
#fpv4-d16 or fpv4-sp-d16 cortex-M4 单精度硬件浮点
- A5 X/ r- @3 V5 S+ t0 M6 i5 L#fpv5-dp-d16 cortex-M7 双精度硬件浮点,这个在GCC下编译不通过,不确定是否正确
' V: X7 Q2 V. W
$ N: t! j2 u: [4 Z* q) O% f
6 B  m6 S8 _) I( L$ ?" b
开启STM32 浮点运算,需要设置下面的参数:
2 j* Y/ h0 j, U: c% LM4内核:4 g3 |6 l8 J! S6 v
-mfpu=fpv4-sp-d16
/ f; y9 n- F2 I" k( QM7内核:
4 t: {4 B) s5 L* S) j. J' Y-mfpu=fpv5-sp-d16
" D$ M4 z2 t/ ~" N+ O
) k7 ^; `) x  Z' t" s! k# W

/ `' S* F) A! T  O4 r-mfloat-abi=hard #这里=soft的话就是软件模拟浮点运算,非常耗时。! x$ W- N1 @! ?/ A' W" L4 R, L
另外rtthread下开启FPU后gcc下编译工程报错的话,还需要加上 -Wa,-mimplicit-it=thumb6 Q+ v8 l' B4 f# G- c% V2 J- c
Error: thumb conditional instruction should be in IT block – `strexeq r1,r2,[r4]’+ P+ m1 l+ P3 o* |
  1.     timer1 = HAL_GetTick();  F( |5 ]# m# J$ W4 v5 |3 y( G
  2.     for(uint32_t i = 0; i < 1000000U; i++)' A9 K3 A' L  w2 P* h
  3.     {
    ' L0 ^7 [' u2 P0 `4 I
  4.       res = a*b;1 g7 D5 b, Z' _' \2 M( [
  5.     }/ H* O5 _0 F, O! N; e1 h
  6.     printf("current timer is %lu\n",HAL_GetTick() - timer1);
    , z% P2 D1 @2 C6 C  r# N4 v
  7.     res +=1;- O+ }/ l& b+ v0 }# X: G
  8.     rt_thread_delay(5000);! R6 a5 J, b4 o/ J% A
复制代码
  t( t( G, H: C0 X' J/ g$ v( S
开启FPU的情况下,运算100万次flot运算,时间时209个tick,我这里时209个ms,2 f8 Z( y2 n+ q' \9 O; x& P
关闭FPU的情况下,运算100万次flot运算,时间时555个tick,我这里时555个ms,! L- b5 T$ f' b3 j7 ^9 Y- [* p$ R3 D2 P
可见FPU对浮点运算性能提升还是有非常大帮助的。% b& E( P' `$ k+ S9 ~
————————————————6 ], P% ~  s; T' g: T1 C# ]) S  m
版权声明:tony++) S+ ]. l( r; Z  j' i+ j! g4 L- s

7 E3 _+ e5 _" y/ \- r) m
收藏 评论0 发布时间:2022-12-28 17:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版