STM32移植DSP库


ARM官方为客户提供了丰富的DSP库,帮助客户进行FFT,FIR等数字信号处理。那么大家就要学会如将DSP库移植到自己工程中。本文硬件使用GFARM02硬件模块[1],文章最后有其淘宝链接。核心器件为STM32F103RCT6,为Cortex-M3核,采用的CMSIS版本为CMSIS_5-5.6.0。

1. 拷贝CMSIS中的Include文件夹

下载CMSIS库文件,在ARM的官方网站上搜索CMSIS就可以找到,下载后拷贝CMSIS中的Include文件夹至工程文件夹下的Libraries>CMSIS>Include

2. 在options for target中添加文件路径

点击keil5菜单栏中的小魔术棒(options for target),C/C++, include path中添加…Libraries>CMSIS>Include路径,使得软件可以找到第一步中添加的文件

3. 添加arm_cortexM3l_math.lib

在keil5中,添加arm_cortexM3l_math.lib文件夹,网上有些下载的文件不正确,看大小可以看出来,1k大小的基本不能用,该文件的物理位置大家可以自己选择,我将其放在User>DSP_Lib文件夹中。同样的需要将其文件路径添加到“小魔术棒”中。

4. 添加arm_fft_bin_data.c

如果大家想使用官方的测试程序,需要一个文件arm_fft_bin_data.c,里面存放着一个正弦波时域数据的数组,用于FFT分析。在keil5中,添加arm_fft_bin_data.c至USER文件夹中,而该文件的物理位置大家可以自己选择,我将其放在User文件夹中。

3. 在options for target中添加关键字

在C/C++>Define中添加ARM_MATH_CM3。并在Include Paths中添加所有.c,.h文件的路径。下图是一个完整的工程界面图,大家可以看到各个文件存放的位置。
在这里插入图片描述

必须的几个头文件

arm_common_tables,arm_const_structs,arm_math,cmsis_armcc,cmsis_compiler这些都是使用DSP库时会用到的头文件,这些文件都在Libraries>CMSIS>Include文件夹中。

我遇到的报错

我在修改官方提供的案例时一加入uart.h文件后,就会报错:
declaration is incompetiable with “uint_32_REV16(uint32_t)”(declared at line…of “…\DSP\Include\cmsis_armcc.h”)
以及
function “__get_BASEPRI” has already been defined.等等错误。双击错误,发现进入的文件是core_cm3.h文件。查了两天,发现是版本的问题。将原来的CMSIS文件夹下core_cm3.h文件删除,改用CMSIS>Include文件夹下的core_cm3.h文件就可以了。(这个问题不是每个人都会遇到,大家使用干净的工程文件,按照上面的操作步骤应该不会遇见这个问题,笔者是偷懒使用了之前比较复杂的工程文件,而版本管理又没有做好导致的这个问题,吸取教训,再次被强调版本管理是个很重要的事情哦。)

作者:伏熊(专业:射频芯片设计、雷达系统。爱好:嵌入式。欢迎大家项目合作交流。)
微信:GuoFengDianZi

[1]https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.67154831RZohYn&id=611784950993

发布了34 篇原创文章 · 获赞 7 · 访问量 9117

猜你喜欢

转载自blog.csdn.net/mzldxf/article/details/104090776