通过 GitHub下载最新的DSP库,地址:https://github.com/ARM-software/CMSIS_5 ,目前最新发布版本是5.9.0,在串口打印例子的基础上添加dsp库。
在keil左侧添加分组 Drivers/DSP,添加头文件路径 添加 DSP 所需的头文件路径,添加路径 Drivers\CMSIS\DSP\Include:
添加静态库文件,STM32H7是 M7内核,双精度浮点,使用小端格式,选择库 Drivers\CMSIS\DSP\Lib\ARM\arm_cortexM7lfdp_math.lib
添加宏定义 ARM_MATH_LOOPUNROLL:
它的功能是用于 4 个为一组的的小批量处理上,加快执行速度。
选择armcc6编译器,打开 FPU ,STM32H7 支持双精度浮点,开启 Double Precision:
在main.c中添加头文件 #include "arm_math.h"就可以调用 DSP 库的函数了,至此完成 了 DSP 库的移植。
添加测试代码:
float32_t pSrcA;
float32_t pSrcB;
float32_t pDst;
q31_t pSrcA1;
q31_t pSrcB1;
q31_t pDst1;
q15_t pSrcA2;
q15_t pSrcB2;
q15_t pDst2;
q7_t pSrcA3;
q7_t pSrcB3;
q7_t pDst3;
/*求和*********************************/
pSrcA = 0.1f;
pSrcB = 0.2f;
arm_add_f32(&pSrcA, &pSrcB, &pDst, 1);
printf("arm_add_f32 = %f\r\n", pDst);
pSrcA1 = 1;
pSrcB1 = 1;
arm_add_q31(&pSrcA1, &pSrcB1, &pDst1, 1);
printf("arm_add_q31 = %d\r\n", pDst1);
pSrcA2 = 2;
pSrcB2 = 2;
arm_add_q15(&pSrcA2, &pSrcB2, &pDst2, 1);
printf("arm_add_q15 = %d\r\n", pDst2);
pSrcA3 = 30;
pSrcB3 = 120;
arm_add_q7(&pSrcA3, &pSrcB3, &pDst3, 1);
printf("arm_add_q7 = %d\r\n", pDst3);
printf("***********************************\r\n");
打印结果如下,符合预期:
后面就可以在此基础上进行FFT计算的测试了。
本帖最后由 dql2016 于 2023-9-28 23:02 编辑
引用: Jacktang 发表于 2023-9-29 18:14 那就期待后面的FT计算的测试了