[经验] 【NUCLEO-H743ZI】3、DSP基本功能测试

dql2016   2023-9-28 23:02 楼主

通过 GitHub下载最新的DSP库,地址:https://github.com/ARM-software/CMSIS_5 ,目前最新发布版本是5.9.0,在串口打印例子的基础上添加dsp库。

在keil左侧添加分组 Drivers/DSP,添加头文件路径 添加 DSP 所需的头文件路径,添加路径 Drivers\CMSIS\DSP\Include:

2.png

添加静态库文件,STM32H7是 M7内核,双精度浮点,使用小端格式,选择库 Drivers\CMSIS\DSP\Lib\ARM\arm_cortexM7lfdp_math.lib

1.png

添加宏定义 ARM_MATH_LOOPUNROLL

它的功能是用于 4 个为一组的的小批量处理上,加快执行速度。

3.png

选择armcc6编译器,打开 FPU ,STM32H7 支持双精度浮点,开启 Double Precision:

4.png

在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");

 

屏幕截图 2023-09-28 225404.png

打印结果如下,符合预期:

屏幕截图 2023-09-28 225449.png

后面就可以在此基础上进行FFT计算的测试了。

 

 
stm32h743_test.rar (35.43 MB)
(下载次数: 1, 2023-9-28 23:02 上传)

 

本帖最后由 dql2016 于 2023-9-28 23:02 编辑

回复评论 (2)

那就期待后面的FT计算的测试了

点赞  2023-9-29 18:14
引用: Jacktang 发表于 2023-9-29 18:14 那就期待后面的FT计算的测试了

点赞  2023-10-11 21:13
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复