对于stm32f4 系列可以使用STM32Cube添加相应的库,自动生成代码。可以参考下面写的文章
(1条消息) STM32CubeMX关于添加DSP库的使用_W_oilpicture的博客-CSDN博客_cubemx dsp库
不过,对于stm32f767等M7的内核目前可能并不适用,需要自己手动添加,主要参考了下面的文章
STM32CubeIDE添加DSP库(附带如何添加代码库)_mutulula的博客-CSDN博客_stm32 使用静态库z
这里自己当作笔记记录下注意点,详细请参考上面的博客,感谢原作者。
一,使用DSP库,建议开启硬件FPU模块。
STM32CubeIDE中与两个宏定义有关__FPU_PRESENT和__FPU_USED。默认应该是开启的。
如果没开启,可以按下面的步骤开启。
二,添加DSP库文件。
按参考博客中的方法,找到需要添加的库文件,
我的电脑中的文件位置如下:
文件准备好之后,就是在IDE中设置
1,添加头文件夹
2,添加库文件夹
3,添加库
这里有三个库
库说明参考 原子手册说明,stm32f767这里选择arm_cortexM7lfdp_math**
****** 特别注意:这里添加的库,要去掉“lib”前缀,不要扩展名,并且添加的时候不要有文件路径,只保留库文件名。正确的如下图
这里我遇到了一些问题,一般我们这样添加之后,会带有路径
如果带有路径的话就会报错
解决方法是对这个库文件,重新编辑edit ,只保留库名
4,使用IDE进行全局宏定义
在Symbols中添加宏定义 ARM_MATH_CM7 告诉DSP库使用的arm内核类型。__FPU_PRESENT头文件里面已经定义,但是这里不定义好像报错,需要在这里定义一下,编译之后,IDE报重复定义警告,可以忽略,或者在文件中注释掉。
5,添加源文件路径
三,函数测试
1,添加头文件
#include "arm_math.h"
2,测试代码
float data;
data = arm_sin_f32(3.1415926/6); //对sin(PI/6 = 30�?)正弦值,求浮点�?�,理论上
printf("sin=%.2f\r\n",data);
3,串口工具打印输出结果