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

【STM32U3 评测】2.U3C5开启FPU测试FFT

[复制链接]
jundao721 发布时间:2026-5-28 17:06
      为了和后续的HSP加速运算进行对比,先测试一下U3C5的FPU进行简单的正弦函数FFT计算的状况。& M) h% O8 v# ^6 S$ F; n
还是先从Cubemx这个工具开始。有两种方式使用DSP library。一种是下载库,然后移植到项目里,一种是在Cubemx里配置DSP library。如图1所示:2 V# z/ c3 l, ?2 G
2-3.png
. [0 Z$ M9 o5 ~3 J图18 d8 m0 \8 ~& y/ b4 V' ]$ q8 Y& ?
1 g7 u' N/ h9 Q' y/ b5 M8 y" p+ }
左边栏中X-CUBE-ALGOBUILD,选择,并勾选DSP library。生成项目。
3 \& n% b) f% H然后使用VSCODE打开项目,编写FFT实现函数。主要代码如下所示:
: B4 [4 e/ Y" N7 u* R
  1.   arm_rfft_fast_init_f32(&fft_handler, FFT_SIZE);
    9 e( N8 c9 X+ V
  2.   GenerateSineWave();7 n, K) Q4 p4 p
  3.   uint32_t start = DWT->CYCCNT;
    $ n  }' N' a+ S3 I! Y  M* {( {
  4.   arm_rfft_fast_f32(&fft_handler, input, fft_output, 0);
    # G, r" Z/ m2 M6 c) X3 Q
  5.   arm_cmplx_mag_f32(fft_output, magnitude, FFT_SIZE / 2);1 X  n1 C/ {! A' y
  6.   uint32_t end = DWT->CYCCNT;* l  _4 w' M% v5 c
  7.   volatile uint32_t cycles = end - start;
    - k# G$ H0 \' i/ x
  8.   printf("FFT computation took %lu cycles\r\n", cycles);
复制代码
$ X& d# }9 @. Y3 r1 P6 Y
在gcc-arm-none-eabi.cmake 中有
6 u# p6 ]% S  a; R' H& w
, i1 h5 c. L% T# {$ }
4 l. `5 v; x9 I9 {
set(TARGET_FLAGS "-mcpu=cortex-m33 -mfpu=fpv5-sp-d16 -mfloat-abi=hard ")
& h# u) D% V+ S) I2 ^  S9 M6 ?/ O, W$ B

7 v7 n$ L) j: g表示编译器已经按硬件FPU方式生成浮点指令。" H* M. L2 s. \! @# p! R
编译,Debug,观察左边Variables 中时间变量circles 的时间数值,包括观察FFT后峰值是否在bin 10的位置。测试结果如图2所示:
6 N+ T: j. n5 S8 v, \5 N 2-1.png   J. Q. n, c8 p9 j, N
图2% u/ F5 {' B, v6 D
从测试结果看和预期相同。 % ~) T4 o1 W% ?' o. h, ~

2 @4 `; Y7 P$ I3 {& r; Y
赞 收藏 评论0 发布时间:2026-5-28 17:06

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版