本帖最后由 rsxh 于 2025-2-24 09:50 编辑
1. 准备工作
在keil的安装pack目录下找到dsp lib的路径。默认的pack的安装路径为C:\Users\用户名\AppData\Local\Arm\Packs 打开C:\Users\用户名\AppData\Local\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\DSP\Lib\ARM目录可以看到如下文件: 调用dsp math lib,需要包含arm_math.h头文件,路径如下: 如本机未安装过CMSIS-DSP pack,可从arm官网下载,地址:https://www.keil.arm.com/packs/cmsis-dsp-arm/versions/ 2. 移植工作 将arm_math.h和相应的lib拷贝到待使用的工程目录里,如main.c的同一级目录。cortex m4有四个dsp math lib,其中arm_cortexM4b_math.lib&arm_cortexM4l_math.lib为不带浮点运算的lib,下划线前的b和l分别代表Big – Endian和Little – Endian.另外两个arm_cortexM4bf_math.lib&arm_cortexM4lf_math.lib为浮点运算的lib。 以HC32F448为例,选择arm_cortexM4lf_math.lib进行数学计算. DSP lib是基于compile version 5编译的,需要启动浮点运算, 打开宏__FPU_PRESENT=1。 故Target选项设置如下: 3.测试代码 头文件包含#include "arm_math.h" 并定义三个数组 float sin_arr[90]; float arm_sin_arr[90]; float radians_arr[90]; 角度转换为弧度后, 用micro lib和dsp lib各做90次运算,通过拉GPIO的方式测量运算结果。 4 性能对比 可以看出, micro lib运算90次sin函数的时间为36.99ms,DSPlib运算90次sin函数的时间为0.74ms,除去循环执行的时间, DSP lib的执行效率约为Micro lib库的50倍。 注:测试工程为进行PLL倍频, 仅仅运行8M主频 ,此测试只是为对比DSP LIB和Micro lib的效率差别, 实际HC32F448可以跑200MHZ主频,堪称性能小钢**。
此测试同样适用于HC32F460/HC32F472/HC32F334/HC32F4A0/HC32F4A8
|