Arm_math 库

功能介绍

ARM Math (CMSIS-DSP) 是 ARM 官方提供的数字信号处理库,包含 600+ 个优化函数,充分利用 Cortex-M4 的 SIMD 指令和 FPU 硬件加速。库涵盖:基本数学运算、三角函数、矩阵运算、滤波器 (FIR/IIR)、FFT 变换、统计分析等。

ARM Math 主要用于:数字滤波 (去除噪声)、FFT 频谱分析、电机控制中的坐标变换、PID 控制器实现、音频处理、传感器数据融合等。相比自行实现的算法,ARM Math 库经过深度优化,执行效率更高且代码更可靠。

常用函数

三角函数

arm_sin_f32, arm_cos_f32

数学运算

arm_sqrt_f32, arm_atan2_f32

滤波器

FIR, IIR, 滑动平均

矩阵运算

矩阵乘法、求逆

使用方法

#include "arm_math.h"

// 计算正弦值
float sin_val = arm_sin_f32(PI / 4);  // sin(45)

// 计算余弦值
float cos_val = arm_cos_f32(PI / 3);  // cos(60)

// 计算平方根
float sqrt_val;

FIR 滤波器

配置步骤

#define NUM_TAPS 32
float32_t fir_coeffs[NUM_TAPS] = {...};
float32_t fir_state[NUM_TAPS + BLOCK_SIZE - 1];

arm_fir_instance_f32 S;
arm_fir_init_f32(&S, NUM_TAPS, fir_coeffs, fir_state, BLOCK_SIZE);

// 执行滤波

性能优化

FPU:STM32G4 内置 FPU,浮点运算高效
DSP 指令:使用 SIMD 指令加速运算