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

Stm32F4XX开启FPU浮点运算

[复制链接]
STMCU小助手 发布时间:2022-12-28 17:00
Stm32F4XX和Stm32H7XX开启FPU浮点运算
* T) t0 C7 _! A; Q2 X* e8 t#softvfp 软浮点+ |4 z2 |; e! e  V& R# w
#fpv5-d16 or fpv5-sp-d16 cortex-M7 单精度硬件浮点
! ?+ l: J2 ?7 `8 \: L$ _; i#fpv4-d16 or fpv4-sp-d16 cortex-M4 单精度硬件浮点
" `$ `2 W) Y% U/ f4 Z# W4 I#fpv5-dp-d16 cortex-M7 双精度硬件浮点,这个在GCC下编译不通过,不确定是否正确# s6 c8 b8 n. Y( d9 _  H/ x

" a$ S& f% G! k' v* N! Z  K' o
6 F7 [6 w1 u9 a' }
开启STM32 浮点运算,需要设置下面的参数:
( U$ l/ M6 M- LM4内核:
9 i2 Q+ G0 B, E! {  l+ I-mfpu=fpv4-sp-d16
6 R. |8 l* D) w0 ^( a/ V8 Q% HM7内核:' H$ v: W8 _6 [6 Z1 s  H
-mfpu=fpv5-sp-d16
0 {7 u' e1 t4 j& |: Q7 V. T
, g6 u# u# S6 I9 U: E2 ~
: _* \* J2 v  F" h9 |  e
-mfloat-abi=hard #这里=soft的话就是软件模拟浮点运算,非常耗时。
% Y* |2 V4 X) W/ ?) z8 r另外rtthread下开启FPU后gcc下编译工程报错的话,还需要加上 -Wa,-mimplicit-it=thumb
, F' F( d5 e/ A( p  l! ?! jError: thumb conditional instruction should be in IT block – `strexeq r1,r2,[r4]’8 M8 |1 q- d; C% l
  1.     timer1 = HAL_GetTick();
    / h6 \" d* [6 y3 I- I! r* Q7 |
  2.     for(uint32_t i = 0; i < 1000000U; i++)& r) v. C) P  s; R  F
  3.     {
    ) B1 A/ K1 n/ K. l( `- }9 d0 Q
  4.       res = a*b;
    : P5 ^6 Z, x; {" z
  5.     }3 V) }% n$ s; ?. V& P4 p
  6.     printf("current timer is %lu\n",HAL_GetTick() - timer1);
    5 m  g% b. J# a6 q1 a) A4 N
  7.     res +=1;
    : D" m" m% {' w' g
  8.     rt_thread_delay(5000);
    + E: g7 ~2 O  p
复制代码

; H5 M+ s& J+ D; W开启FPU的情况下,运算100万次flot运算,时间时209个tick,我这里时209个ms,1 D- T2 P4 ^$ \& z
关闭FPU的情况下,运算100万次flot运算,时间时555个tick,我这里时555个ms,# W( K' I! |+ v; m
可见FPU对浮点运算性能提升还是有非常大帮助的。
# t+ }& T- U/ h: ^————————————————
! R  ?; J3 }0 ?3 v+ l: b版权声明:tony++
6 h' b8 d# B$ g& a! k$ J  |( ?, m) t6 P3 d+ j
收藏 评论0 发布时间:2022-12-28 17:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版