提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
前段时间看了改用CLion做STM32的开发,使用cubeMX添加DSP库,生成项目后编译报错undefined reference to `arm_sin_f32',参考了很多文章都是用的keil,关于Clion的很少
一、使用cubeMX创建工程并添加DSP库
打开Software Packs选择Select Components
选择DSP Library
下载并勾选
点击OK退出
完成其他相关配置,点击GENERATE CODE生成代码
二、使用步骤
1.打开Clion
查看对应的库文件
2.修改CMakeLists.txt
在add_executable 之前添加如下代码,具体参数和路径根据情况修改,这里我用的是stm32f103c8t6,cubeMX生成的默认目录结构
#DSP
add_definitions(-DARM_MATH_CM3 -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING)
include_directories("Middlewares/ST/ARM/DSP/Inc")
link_directories(Middlewares/ST/ARM/DSP/Lib)
link_libraries(libarm_cortexM3l_math.a)
最后简单用串口测试一下:
while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ float data; data = arm_sin_f32(3.1415926/6); printf("正弦值为%.2f",data); } /* USER CODE END 3 */ }
总结
DSP库支持的计算类别包括:
基本数学函数,包括:向量的绝对值,加减乘除,位与,点乘,或,异或等
快速数学函数,包括:平方根,余弦,正弦
复杂的数学函数,包括:共轭,点乘,复数,复数平方,乘方,实数乘法
滤波功能,包括:FIR IIR LMS 等
矩阵函数,包括:矩阵的加法、转置、乘法、逆等
变换功能,包括:FFT
电机控制功能,包括:PID、Clarke、正余弦变换等
统计功能,包括:最大、平均、方差、标准差、均方根等
支持功能,包括:排序、填充、插值、转换等
插值功能,包括:线性插值、双线性插值等
支持向量机功能(SVM),包括:SVM
贝叶斯分类器功能,包括:贝叶斯估计
距离计算功能,包括:常见的距离计算,如欧式距离,余弦距离等