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

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

[复制链接]
jundao721 发布时间:2026-5-28 17:06
      为了和后续的HSP加速运算进行对比,先测试一下U3C5的FPU进行简单的正弦函数FFT计算的状况。6 n9 D* ~9 @0 t- k5 W1 i& i
还是先从Cubemx这个工具开始。有两种方式使用DSP library。一种是下载库,然后移植到项目里,一种是在Cubemx里配置DSP library。如图1所示:4 R7 }9 b7 s. ]" u0 R
2-3.png ! P+ `# }' J8 l
图13 L2 F' c+ {: y0 I; q! L9 z

% {; I/ o* ~: M6 y; U左边栏中X-CUBE-ALGOBUILD,选择,并勾选DSP library。生成项目。& Z. N& x- J0 s( A( q
然后使用VSCODE打开项目,编写FFT实现函数。主要代码如下所示:
% P+ a  h+ V2 R- R9 A& h% v8 w
  1.   arm_rfft_fast_init_f32(&fft_handler, FFT_SIZE);& d; ~$ X( T2 [+ k, I
  2.   GenerateSineWave();6 x# [0 `# ^! J2 C! W
  3.   uint32_t start = DWT->CYCCNT;
    ! Y2 H2 J. I3 @. g$ ~. |/ U* L. ^; |- r
  4.   arm_rfft_fast_f32(&fft_handler, input, fft_output, 0);
    6 B6 u  k: h7 R* `. x
  5.   arm_cmplx_mag_f32(fft_output, magnitude, FFT_SIZE / 2);
    7 t( l2 {$ ?( E! _0 P9 P
  6.   uint32_t end = DWT->CYCCNT;/ O! {( l9 I% W
  7.   volatile uint32_t cycles = end - start;
    5 _. x+ N; K9 H) H+ ~# z- j1 \  n( }" ~
  8.   printf("FFT computation took %lu cycles\r\n", cycles);
复制代码

$ A0 ?( D) D5 a在gcc-arm-none-eabi.cmake 中有
2 b; g+ U6 S( s. e( A
" T+ H, k7 [/ F; _

+ W# Q% b# o) W/ d4 L2 xset(TARGET_FLAGS "-mcpu=cortex-m33 -mfpu=fpv5-sp-d16 -mfloat-abi=hard ")
0 y( C8 A# c0 y0 g; ^5 }6 {3 A0 {" v
1 ^( e2 M. `$ `# s# Q' a- r
表示编译器已经按硬件FPU方式生成浮点指令。! |! u3 Z; j- \; X2 z
编译,Debug,观察左边Variables 中时间变量circles 的时间数值,包括观察FFT后峰值是否在bin 10的位置。测试结果如图2所示:0 M+ |7 S: G" K4 k, i+ |1 c' L
2-1.png , R" D( F: M# E' n% }5 Y* [; h4 C: h
图2
, m9 S6 h' R, Z) P. @, e$ C从测试结果看和预期相同。
& L& o8 x; Q0 ?, D! S: y% U9 t% O) Z7 I
收藏 评论0 发布时间:2026-5-28 17:06

举报

0个回答

所属标签

相似技术帖

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