注意
此方法只介绍DSP库的添加方法,Keil工程的配置不进行说明。
此方案只能适用于M3和M4的核,也就是我们常见的F1,F4等。对于H7,F7这样采用M7的核就不适用了。
同时注意,默认添加的库是不带浮点运算的也就是不支持FPU,所以F4添加完成后可以手动以文件的方式更改成为带浮点运算的方式,也可也把FPU取消掉(强烈不推荐取消)。
CubeMX工程配置
这样之后,点击generate,生成代码就可以了。下面进入keil端的操作。
Keil配置
- 添加宏
在define一栏,添加如下的代码
,ARM_MATH_CM3//F1是M3,F4是M4,H7是M7
- 开启FPU
点击 Project -> Options for Target,打开工程选项界面,点击Target选项卡,在Code Generation区域的Floating Point Hardware中选择Single Precision(单精度)。
- 重要步骤:添加DSP库到工程中
若使用的是STM32CubeMX生成的工程,DSP库文件就在工程目录中,位于.\Drivers\CMSIS\Lib\ARM,里面有4个文件:
注:‘b’表示大端格式(Big Endian),‘l’表示小端格式(Little Endian),‘f’表示带浮点数。
我们目前使用的硬件平台是STM32F407系列,它带有FPU,同时使用的是小端格式,因此使用arm_cortexM4lf_math.lib,将它添加到工程中。
源码中添加
代码添加头文件
代码测试
float data;//定义一个float型变量
while (1)
{
data=arm_sin_f32(3.1415926/6);//sin(30°),理论值为0.5
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
运行,查看结果
结果正确。