我在 github 上看到过 CMSIS 5 的代码,但现在找不到了。它证实了您所看到的关于数学库中可用的全局常量 cfft 结构的内容。
使用 nm 查看库,在我的例子中是 libarm_cortexM4lf_math.a:
nm libarm_cortexM4lf_math.a
这提供了在 arm_rfft_init_q31 调用中引用的只读结构的列表。
arm_const_structs.o:
00000000 R arm_cfft_sR_f32_len1024
00000000 R arm_cfft_sR_f32_len128
00000000 R arm_cfft_sR_f32_len16
00000000 R arm_cfft_sR_f32_len2048
00000000 R arm_cfft_sR_f32_len256
00000000 R arm_cfft_sR_f32_len32
00000000 R arm_cfft_sR_f32_len4096
00000000 R arm_cfft_sR_f32_len512
00000000 R arm_cfft_sR_f32_len64
00000000 R arm_cfft_sR_q15_len1024
00000000 R arm_cfft_sR_q15_len128
00000000 R arm_cfft_sR_q15_len16
00000000 R arm_cfft_sR_q15_len2048
00000000 R arm_cfft_sR_q15_len256
00000000 R arm_cfft_sR_q15_len32
00000000 R arm_cfft_sR_q15_len4096
00000000 R arm_cfft_sR_q15_len512
00000000 R arm_cfft_sR_q15_len64
00000000 R arm_cfft_sR_q31_len1024
00000000 R arm_cfft_sR_q31_len128
00000000 R arm_cfft_sR_q31_len16
00000000 R arm_cfft_sR_q31_len2048
00000000 R arm_cfft_sR_q31_len256
00000000 R arm_cfft_sR_q31_len32
00000000 R arm_cfft_sR_q31_len4096
00000000 R arm_cfft_sR_q31_len512
00000000 R arm_cfft_sR_q31_len64
以及 q31 初始化,例如:
arm_rfft_init_q31.o:
U arm_cfft_sR_q31_len1024
U arm_cfft_sR_q31_len128
U arm_cfft_sR_q31_len16
U arm_cfft_sR_q31_len2048
U arm_cfft_sR_q31_len256
U arm_cfft_sR_q31_len32
U arm_cfft_sR_q31_len4096
U arm_cfft_sR_q31_len512
U arm_cfft_sR_q31_len64
00000001 T arm_rfft_init_q31
000000e4 t $d
00000000 r $d
00000000 r $d
00000010 N $d
00000000 r realCoefAQ31
00000000 r realCoefBQ31
00000000 t $t
如CMSIS 文档中所示,可以直接引用上面的 cfft 结构以及旋转因子指针来定义实例结构,而不是使用用于 Real FFT 的 init 函数。