一、工程中如何添加DSP库
在keil5软件中点击 Pack,CMISIS组件选择DSP资源,可以选择Source源码或者Library库导入到项目中,点击OK,可以在项目树中看到该资源已经导入了工程。
二、 如何使用DSP库
DSP库对浮点计算做了优化和增强,一般来说在具有FPU单元的单片机上运行效果更好,STM32F4 是M4内核,支持FPU,但默认是关闭该功能的,需要手动开启,开启方法很简单,开启Single Precison,硬件浮点计算功能即可。
以STM32F4为例,其预编译添加以下宏支持:ARM_MATH_CM4(CM4支持的),ARM_MATH_MATRIX_CHECK(矩阵输入输出检查),ARM_MATH_ROUNDING(四舍五入相关支持)
在项目工程中,一般需要包括#include "arm_math.h" #include "math_helper.h" #include "arm_const_structs.h"头文件夹即可。
具体使用方法参考官方说明文档,没有哪一个博客写的有官方文档好。
DSP库支持的计算类别包括:
- 基本数学函数,包括:向量的绝对值,加减乘除,位与,点乘,或,异或等
- 快速数学函数,包括:平方根,余弦,正弦
- 复杂的数学函数,包括:共轭,点乘,复数,复数平方,乘方,实数乘法
- 滤波功能,包括:FIR IIR LMS 等
- 矩阵函数,包括:矩阵的加法、转置、乘法、逆等
- 变换功能,包括:FFT
- 电机控制功能,包括:PID、Clarke、正余弦变换等
- 统计功能,包括:最大、平均、方差、标准差、均方根等
- 支持功能,包括:排序、填充、插值、转换等
- 插值功能,包括:线性插值、双线性插值等
- 支持向量机功能(SVM),包括:SVM
- 贝叶斯分类器功能,包括:贝叶斯估计
- 距离计算功能,包括:常见的距离计算,如欧式距离,余弦距离等
在线参考手册:https://www.keil.com/pack/doc/CMSIS/DSP/html/group__cos.html#gace15287f9c64b9b4084d1c797d4c49d8
其他需要注意的事项,注意KEIL软件版本和Pack,尽量使用最新的版本。