tortures 发表于 2024-9-6 10:27

N32G455的DSP指令使用

求问各位大佬,N32G455中的浮点运算与DSP指令功能如何使用啊,也没找到官方在这方面的使用资料。

niceguy 发表于 2024-9-6 15:25

这个是ARM Cortex-M4内核自带的特点,和STM32一样的,到网上搜下STM32 m4怎么 配置的一大把

一周一天班 发表于 2024-9-9 11:20

本帖最后由 一周一天班 于 2024-9-9 11:22 编辑

1)找到CMDIS路径,比如C:\Users\90820\AppData\Local\Arm\Packs\ARM\CMSIS\5.0.1\CMSIS\DSP_Lib\Source\ARM
2)该目录下有KEIL项目arm_cortexM_math.uvprojx,打开
3)修改MCU为ARMCM4_FP,c/c++选项中:ARM_MATH_MATRIX_CHECK, ARM_MATH_ROUNDING,ARM_MATH_CM4,__FPU_PRESENT=1
4)如果是NW452蓝牙型号,MISC中加--wchar32,其他不理会
5)Output生产库文件,比如arm_M4LF_math_Wc32
6)编译生成库
6)但这个库不合适直接用,应该会生成比较庞大的应用代码,需要进一步修改.
7)修改后的代码和库见附件,就是从arm_common_tables.c提取表数据,这样生成的应用代码非常小

jcky001 发表于 2024-9-10 14:59

浮点运算的使用c
#include <math.h>

float addFloats(float a, float b) {
    return a + b;
}

int main() {
    float result = addFloats(3.14f, 2.71f);
    // 后续处理...
}

jcky001 发表于 2024-9-10 15:00

DSP指令的使用示例(使用CMSIS-DSP库)

假设你正在实现一个FIR(有限脉冲响应)滤波器,你可以使用CMSIS-DSP库中的arm_fir_f32()函数。首先,你需要包含CMSIS-DSP库的头文件,并配置滤波器参数,然后调用该函数进行滤波处理。

c
#include "arm_math.h"

// 假设已经定义了滤波器系数和输入信号
float32_t coeffs = { ... };
float32_t inputSignal = { ... };
float32_t outputSignal;

arm_fir_instance_f32 S;
arm_fir_init_f32(&S, numTaps, (float32_t *)&coeffs, &state, blockSize);

arm_fir_f32(&S, inputSignal, outputSignal, blockSize);

// 后续处理...

cr315 发表于 2024-9-10 19:56

联系国民技术的技术支持

szt1993 发表于 2024-9-24 15:15

ARM Cortex-M4内核自带的特点

合同圣诞节fy 发表于 2024-9-30 14:05

N32G455中的浮点运算与DSP指令
页: [1]
查看完整版本: N32G455的DSP指令使用