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 指令加速运算
DSP 指令:使用 SIMD 指令加速运算