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

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

[复制链接]
jundao721 发布时间:2026-5-28 17:06
      为了和后续的HSP加速运算进行对比,先测试一下U3C5的FPU进行简单的正弦函数FFT计算的状况。
2 ~9 n1 J1 V1 L3 y- [还是先从Cubemx这个工具开始。有两种方式使用DSP library。一种是下载库,然后移植到项目里,一种是在Cubemx里配置DSP library。如图1所示:
$ Z2 ^- ]: T( X 2-3.png ' Z/ i, r4 Y" W& f* S( I3 w, _
图1
  E( b3 D- v! }7 W
! q/ O1 S: J4 n, i& w左边栏中X-CUBE-ALGOBUILD,选择,并勾选DSP library。生成项目。
9 a9 V+ B# ^9 r5 j/ A1 V, m然后使用VSCODE打开项目,编写FFT实现函数。主要代码如下所示:
3 X. f6 _6 |) t1 B9 X" o
  1.   arm_rfft_fast_init_f32(&fft_handler, FFT_SIZE);# J- i7 c$ b  u2 U
  2.   GenerateSineWave();6 |3 g" y* p) r* A
  3.   uint32_t start = DWT->CYCCNT;3 X+ K1 f& ^9 D# V
  4.   arm_rfft_fast_f32(&fft_handler, input, fft_output, 0);
    ' I: e( ?8 y* T) R
  5.   arm_cmplx_mag_f32(fft_output, magnitude, FFT_SIZE / 2);
    7 g: ^, K( R+ }+ H- S
  6.   uint32_t end = DWT->CYCCNT;8 x$ \9 {. d/ q" @+ Z8 R
  7.   volatile uint32_t cycles = end - start;/ ~. ~, C2 v3 A, l( P) A/ |6 R* Y
  8.   printf("FFT computation took %lu cycles\r\n", cycles);
复制代码
1 X' H" E3 L, U
在gcc-arm-none-eabi.cmake 中有0 E; S3 O8 C# g4 V$ R* G# ]! P  _% w
7 }) Y) d  ?* ^! h5 o

9 m$ k2 n# _" N6 `/ ^set(TARGET_FLAGS "-mcpu=cortex-m33 -mfpu=fpv5-sp-d16 -mfloat-abi=hard ")
: I0 i( n+ _9 Y5 r! t% F0 M" D4 u) O

, n2 A% u0 J. [3 S表示编译器已经按硬件FPU方式生成浮点指令。
8 S& r* x9 U" ^- K7 ^$ [0 |编译,Debug,观察左边Variables 中时间变量circles 的时间数值,包括观察FFT后峰值是否在bin 10的位置。测试结果如图2所示:# W& Q+ R0 ^7 v
2-1.png / D# Y  V. h! }# q
图23 M1 p# P: n0 e3 }+ V' j* y
从测试结果看和预期相同。
3 f' _4 D) \7 D
; R: H3 ~6 y& Z) F4 V9 N
赞 收藏 评论0 发布时间:2026-5-28 17:06

举报

0个回答

所属标签

相似技术帖

官网相关资源

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