STM32L433中有FPU,在使用中为了使用其中的部分函数,需要对其进行配置。
配置成功后做些总结,留待后续复习备忘,同时也希望有朋友像我一样使用DSP库配置时少走弯路,留作交流。
配置过程如下:
1、建立完整工程,添加必要文件,编绎通过。
2、在STM32Cube_FW_L4_V1.6.0\Drivers\CMSIS\Lib\ARM\ 中存在四个文件,分别为
在其说明文档里可以看到这四个文件的区别如下:
Using the Library
The library installer contains prebuilt versions of the libraries in the Lib
folder.
- arm_cortexM7lfdp_math.lib (Little endian and Double Precision Floating Point Unit on Cortex-M7)
- arm_cortexM7bfdp_math.lib (Big endian and Double Precision Floating Point Unit on Cortex-M7)
- arm_cortexM7lfsp_math.lib (Little endian and Single Precision Floating Point Unit on Cortex-M7)
- arm_cortexM7bfsp_math.lib (Big endian and Single Precision Floating Point Unit on Cortex-M7)
- arm_cortexM7l_math.lib (Little endian on Cortex-M7)
- arm_cortexM7b_math.lib (Big endian on Cortex-M7)
- arm_cortexM4lf_math.lib (Little endian and Floating Point Unit on Cortex-M4)
- arm_cortexM4bf_math.lib (Big endian and Floating Point Unit on Cortex-M4)
- arm_cortexM4l_math.lib (Little endian on Cortex-M4)
- arm_cortexM4b_math.lib (Big endian on Cortex-M4)
- arm_cortexM3l_math.lib (Little endian on Cortex-M3)
- arm_cortexM3b_math.lib (Big endian on Cortex-M3)
- arm_cortexM0l_math.lib (Little endian on Cortex-M0 / CortexM0+)
- arm_cortexM0b_math.lib (Big endian on Cortex-M0 / CortexM0+)
因为STM32L433是带浮点运算单元并且是Little endian ,在这里将arm_cortexM4lf_math.lib这个文件复制到工程目录文件夹下,并将其添加至工程(直接添加,无需解压)。
在STM32Cube_FW_L4_V1.6.0\Drivers\CMSIS\DSP_Lib\Source中可以查看相关源代码。
在STM32Cube_FW_L4_V1.6.0\Drivers\CMSIS\Documentation\index.html中可以相看说明文档。
3、在工程配置中,选择使用FPU。
4、在工程配置中,使用宏定义配置使用FPU。由于很多官方的文件都是只读的,个人建议不要修改其只读属性后修改文件内容,以免在移植时引起不必要的麻烦。
STM32L433xx,USE_HAL_DRIVER,ARM_MATH_CM4,__FPU_PRESENT=1,__FPU_USED =1
5、在使用的文件里添加头文件
#include "arm_math.h"
#include "arm_const_structs.h"
6、现在可以直接调用DSP库中的相关函数,函数说明可以参照说明文件。
在网上无意间看到过安富莱写的一些《ARM官方DSP库xxx的使用》,里面介绍的很详细,对我开始使用时起到了非常大的帮助,可以搜索参考,仅供交流。
致谢:
在配置过程中也曾在网上查找过很多人写的博客或者说明,对我的使用过程起到了很大的帮助,致以敬意。