搜索
bottom↓
回复: 112

手把手教你怎么使用STM32F4 DSP库进行FFT

  [复制链接]

出0入0汤圆

发表于 2012-5-6 19:38:00 | 显示全部楼层 |阅读模式
M4的板子买了好久 :(被坑了 186买的 伤心
之前想玩一下FPU 可惜那个DSP库看不懂 也找不到教程  我研究了2个晚上总算会用那个FFT了....
我的环境是 IAR 6.2
板子是STM32F4DISCOVERY
第一 首先下载官方的   STM32F4xx_DSP_StdPeriph_Lib_V1.0.0  没有的同学请自己去官网下一个
DSP库在 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Libraries\CMSIS

然后我们使用IAR建立工作空间 这个教程到处都有 我就不说了
在编译器里面加入


$PROJ_DIR$\..\..\..\Libraries\CMSIS\DSP_Lib\Source

ARM_MATH_CM4
ARM_MATH_MATRIX_CHECK
ARM_MATH_ROUNDING
__FPU_PRESENT
__FPU_USED
这样才可以使用DSP库
注意 我的是IAR MDK貌似不是这样的 .....
然后再编译器里面打开 FPU
恩 然后再你的EWARM 目录下添加官方的例子文件
恩 我们用的就是这几个文件 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Libraries\CMSIS\DSP_Lib\Examples\arm_fft_bin_example

没有那么容易完了 接着  像我这样加入这些组 在里面添加文件 文件在 STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Libraries\CMSIS\DSP_Lib\Source
添加啊 ...................终于添加完了 然后在IAR里面加入 arm_fft_bin_example_f32 这个就是官方的例子  和官方的数据 arm_fft_bin_data
我的改了名字 叫main.....了
然后终于可以编译了 连接下载
使用WATCH窗口可以看见值

然后 我讲一下这几个函数的作用
          /* Initialize the CFFT/CIFFT module */  
        status = arm_cfft_radix4_init_f32(&S, fftSize,  
                                                                          ifftFlag, doBitReverse);              //这里是FFT的初始化
         
        /* Process the data through the CFFT/CIFFT module */                                 //FFT计算的函数 注意  testInput_f32_10khz 这个数组 不能是const 因为计算值是覆盖在这里面的
        arm_cfft_radix4_f32(&S, testInput_f32_10khz);
         
         
        /* Process the data through the Complex Magnitude Module for               // FFT出来的是复数  这里是把复数求模 得幅值
        calculating the magnitude at each bin */
        arm_cmplx_mag_f32(testInput_f32_10khz, testOutput,  
                                          fftSize);  
         
        /* Calculates maxValue and returns corresponding BIN value */                        //这里是求FFT出来数据模的最大值
        arm_max_f32(testOutput, fftSize, &maxValue, &testIndex);

最后 如果你的运行到这一步 你就成功了
哈哈哈

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2012-5-6 19:55:56 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2012-5-6 23:34:34 | 显示全部楼层
最近弄这个,楼主顺便弄些IIR FIR之类的例子吧

出0入0汤圆

发表于 2012-5-6 23:35:58 | 显示全部楼层
一步一步传授,不错,支持下,谢谢楼主~~·

出0入0汤圆

发表于 2012-5-8 20:43:32 | 显示全部楼层
103系列的有没有DSP,怎么玩的?

出0入0汤圆

发表于 2012-5-8 21:12:47 | 显示全部楼层
能像ccs有图形分析的工具就好了

出0入0汤圆

发表于 2012-5-8 21:25:20 | 显示全部楼层
标记着,以后用得着

出0入0汤圆

发表于 2012-5-8 21:36:40 | 显示全部楼层
项目还在用F1x
对F4表示关注

出0入0汤圆

发表于 2012-5-8 21:44:05 | 显示全部楼层
观望中,还不懂有什么作用!

出0入0汤圆

发表于 2012-5-8 21:55:06 | 显示全部楼层
前段时间稍微研究了一下 ST 的官方 FFT,感觉除了做个音频效果,没啥正经用处 ...... 还是我没研究明白?

出0入0汤圆

发表于 2012-5-8 23:07:00 | 显示全部楼层
也有这个板子,没玩过它的DSP库呢

出0入0汤圆

 楼主| 发表于 2012-5-9 00:11:01 | 显示全部楼层
philix 发表于 2012-5-8 20:43
103系列的有没有DSP,怎么玩的?

103有DSP库 只是没有硬件FPU 也就是FFT速度慢

出0入0汤圆

发表于 2012-5-9 06:04:10 | 显示全部楼层
不知道速度如何

出0入0汤圆

发表于 2012-5-9 08:09:02 | 显示全部楼层
这我以前试验过,结果弄的一团糟……还是标准程序好用些。

出0入0汤圆

发表于 2012-5-9 08:56:04 | 显示全部楼层
关注,什么时候能下载附件?

出0入0汤圆

发表于 2012-5-9 09:12:31 | 显示全部楼层
发现13楼走光了

出0入0汤圆

发表于 2012-5-9 09:37:33 | 显示全部楼层
先记录,有空再试试

出0入0汤圆

发表于 2012-5-9 13:48:01 | 显示全部楼层
好经验,顶一下,自己当初研究这个也花了点时间

出0入0汤圆

发表于 2012-5-9 15:15:10 | 显示全部楼层
先记录,有空再试试

出0入0汤圆

发表于 2012-5-9 16:03:27 | 显示全部楼层
高度关注,呵呵

出0入0汤圆

发表于 2012-5-9 21:01:59 | 显示全部楼层
FFT库精度不高,玩玩还是可以的

出0入0汤圆

 楼主| 发表于 2012-5-9 22:24:51 | 显示全部楼层
walton_smith 发表于 2012-5-9 21:01
FFT库精度不高,玩玩还是可以的

en 是的 最大1024个点 玩玩不错

出0入0汤圆

发表于 2012-5-15 21:35:19 | 显示全部楼层
Mark         

出0入0汤圆

发表于 2012-5-15 23:08:50 | 显示全部楼层
速度如何?

出0入0汤圆

发表于 2012-5-23 21:41:20 | 显示全部楼层
mark fft                                          

出0入0汤圆

发表于 2012-5-23 21:48:26 | 显示全部楼层
顶下。。。

出0入0汤圆

发表于 2012-5-23 22:44:18 | 显示全部楼层
我用FFT解码DTMF256点每秒约200次

出0入0汤圆

发表于 2012-5-23 22:56:57 | 显示全部楼层
一直用的是mdk  iar基本不会用

出0入0汤圆

发表于 2012-5-23 23:15:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-5-23 23:45:48 | 显示全部楼层
LZ能打包一个完整的工程参考么 就是LZ位的 谢谢

出0入0汤圆

 楼主| 发表于 2012-5-24 00:03:42 | 显示全部楼层
wangguanfu 发表于 2012-5-23 23:45
LZ能打包一个完整的工程参考么 就是LZ位的 谢谢


当然可以 我这就传

出0入0汤圆

 楼主| 发表于 2012-5-24 00:09:21 | 显示全部楼层
只有工程 没有库文件 按照LZ位置的地方放就行 我的库被我改过了 没有验证所以就不传了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-5-24 00:16:26 | 显示全部楼层
clogord 发表于 2012-5-24 00:09
只有工程 没有库文件 按照LZ位置的地方放就行 我的库被我改过了 没有验证所以就不传了  ...

非非非非非非非非非非非非非非非非非非非非非非非非常感谢

出0入0汤圆

发表于 2012-5-24 06:00:32 | 显示全部楼层
呵呵,记号下

出0入0汤圆

发表于 2012-5-28 15:55:16 | 显示全部楼层
这个不错 ,哈哈

出0入0汤圆

发表于 2012-5-28 16:19:36 | 显示全部楼层
收藏收藏,谢谢。

出0入0汤圆

发表于 2012-5-28 21:12:26 | 显示全部楼层
谢谢分享。。。

出0入0汤圆

发表于 2012-7-19 11:07:56 | 显示全部楼层
楼主,你好,我想请问一下,我在编译的时候总是说打不开ARMCM4.h这个文件,不知道您遇到了没,请求帮助,我用的是keil,非常感谢!

出0入0汤圆

发表于 2012-8-3 03:33:23 | 显示全部楼层
好贴,mark一下

出0入0汤圆

发表于 2012-8-3 09:34:46 | 显示全部楼层
好 很不错!

出0入0汤圆

发表于 2012-8-21 20:24:34 | 显示全部楼层
楼主,有没有用KEIL建立的?自己建了一个运行不起来。

出0入0汤圆

发表于 2012-8-22 07:15:44 | 显示全部楼层
没弄过,想试试,

出0入0汤圆

发表于 2012-8-22 08:11:28 | 显示全部楼层
很好,很不错

出0入0汤圆

发表于 2012-8-22 08:19:27 | 显示全部楼层
标记一下

出0入0汤圆

发表于 2012-8-22 10:05:08 | 显示全部楼层
MARK,备用!!!!

出0入0汤圆

发表于 2012-8-22 13:04:49 | 显示全部楼层
mark           

出0入0汤圆

发表于 2012-8-22 14:27:26 | 显示全部楼层
学习 f4 fft

出0入0汤圆

发表于 2012-10-16 22:52:36 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2012-11-6 15:21:18 | 显示全部楼层
最近用FFT做50Hz交流信号的采集,有同路的吗?

出0入0汤圆

发表于 2012-11-20 23:51:46 | 显示全部楼层
不错.如何用FFT 来计算交流采样值呢

出0入0汤圆

发表于 2012-11-21 01:00:21 来自手机 | 显示全部楼层
谢谢了,讲解详细            

出0入0汤圆

发表于 2012-12-6 22:23:02 | 显示全部楼层
xingshow 发表于 2012-7-19 11:07
楼主,你好,我想请问一下,我在编译的时候总是说打不开ARMCM4.h这个文件,不知道您遇到了没,请求帮助,我 ...

改为..\..\..\..\ST\STM32F4xx\Include目录下的stm32f4xx.h。

出0入0汤圆

发表于 2012-12-6 22:43:26 | 显示全部楼层
STM32F4 DSP库 玩 FFT

出0入0汤圆

发表于 2012-12-7 09:21:07 | 显示全部楼层
xingshow 发表于 2012-7-19 11:07
楼主,你好,我想请问一下,我在编译的时候总是说打不开ARMCM4.h这个文件,不知道您遇到了没,请求帮助,我 ...

在project->Option fot Target->C/C++宏定义ARM_MATH_CM4,看看arm_math.h刚开始的这段代码吧!写的很清楚。


#if defined (ARM_MATH_CM4)
  #include "core_cm4.h"
#elif defined (ARM_MATH_CM3)
  #include "core_cm3.h"
#elif defined (ARM_MATH_CM0)
  #include "core_cm0.h"
#else
#include "ARMCM4.h"//假若,以上三个宏均未定义。不可判断到底是哪个内核时,包含此文件。其实,此文件不存在。
#warning "Define either ARM_MATH_CM4 OR ARM_MATH_CM3...By Default building on ARM_MATH_CM4....."
#endif

出0入0汤圆

发表于 2012-12-7 09:25:22 | 显示全部楼层
本帖最后由 laixiaoshuai90 于 2012-12-7 09:29 编辑
wjdb3 发表于 2012-8-21 20:24
楼主,有没有用KEIL建立的?自己建了一个运行不起来。


keil mdk一定要在project->Option fot Target->C/C++宏定义ARM_MATH_CM4,__FPU_PRESENT 1,__FPU_USED 1。

出0入0汤圆

发表于 2012-12-7 10:29:26 | 显示全部楼层
谢谢lz教程,学习

出0入0汤圆

发表于 2012-12-7 19:19:32 | 显示全部楼层
坚决MARK!

出0入0汤圆

发表于 2012-12-7 22:06:01 | 显示全部楼层
坚决mark,顶起

出0入0汤圆

发表于 2012-12-8 09:56:28 | 显示全部楼层
mark            

出0入0汤圆

发表于 2012-12-8 09:57:26 | 显示全部楼层
mark            

出0入0汤圆

发表于 2012-12-8 19:44:36 | 显示全部楼层
谢谢、

出0入0汤圆

发表于 2012-12-9 14:52:38 | 显示全部楼层
很好很强大

出0入0汤圆

发表于 2013-2-4 12:14:51 | 显示全部楼层
这个东西要好好学习了

出0入0汤圆

发表于 2013-2-4 12:29:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-2-4 14:28:11 | 显示全部楼层
不错。下次也学习用一下。

出0入0汤圆

发表于 2013-3-11 15:11:38 | 显示全部楼层
强大,现在没有用上,希望有用上的时间。

出0入0汤圆

发表于 2013-3-11 16:20:29 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2013-3-26 11:46:06 | 显示全部楼层
请问MDK的用法和IAR的用法有什么区别?

出0入0汤圆

发表于 2013-4-4 16:39:03 | 显示全部楼层
关注F4中,想要用呢

出0入0汤圆

发表于 2013-4-5 14:56:56 | 显示全部楼层
mark一下,有空来学

出0入0汤圆

发表于 2013-4-8 11:19:21 | 显示全部楼层
xingshow 发表于 2012-7-19 11:07
楼主,你好,我想请问一下,我在编译的时候总是说打不开ARMCM4.h这个文件,不知道您遇到了没,请求帮助,我 ...

我也遇到过这个问题,好像要设置编译选项的

出0入0汤圆

发表于 2013-5-9 17:18:24 | 显示全部楼层
做个记号

出10入95汤圆

发表于 2013-5-9 21:04:09 | 显示全部楼层
谢谢,fft后面呢?

出0入0汤圆

发表于 2013-5-9 23:10:34 | 显示全部楼层
收藏收藏、、、

出0入0汤圆

发表于 2013-5-10 00:19:29 | 显示全部楼层
楼主有没有什么例子  自己做的啊  最近学这个,有点晕  能分享下吗?

出0入0汤圆

发表于 2013-5-24 15:14:51 | 显示全部楼层
你好,楼主,有没有试过 void arm_rfft_f32(  const arm_rfft_instance_f32 * S,  float32_t * pSrc,  float32_t * pDst);  你所举例子是可以的.但对于实数fft ,我试了,结果似乎不对.

出0入0汤圆

发表于 2013-5-24 16:35:07 | 显示全部楼层
不错不错,谢谢分享

出0入0汤圆

发表于 2013-5-24 19:12:35 | 显示全部楼层
搞信号处理要懂得原理

出0入0汤圆

发表于 2013-5-24 21:25:01 | 显示全部楼层
赞一个         

出0入0汤圆

发表于 2013-5-29 03:51:01 | 显示全部楼层
马克啊~~~~~~~

出0入0汤圆

发表于 2013-5-29 09:53:06 | 显示全部楼层
不错,赞一个。

出0入0汤圆

发表于 2013-6-8 13:14:14 | 显示全部楼层
                  mark

出0入0汤圆

发表于 2013-10-15 17:08:39 | 显示全部楼层
xingshow 发表于 2012-7-19 11:07
楼主,你好,我想请问一下,我在编译的时候总是说打不开ARMCM4.h这个文件,不知道您遇到了没,请求帮助,我 ...

你好  我遇到了同样的问题  编译的时候说没有ARMCM4.h   不知道 你怎么解决的    在线等……

出0入0汤圆

发表于 2013-10-17 20:52:53 | 显示全部楼层
clogord 发表于 2012-5-9 00:11
103有DSP库 只是没有硬件FPU 也就是FFT速度慢

请问103的DSP库在哪里可以找到?楼主可否提供一下?

出0入24汤圆

发表于 2013-10-29 07:01:31 | 显示全部楼层
感谢楼主,学习一下

出0入0汤圆

发表于 2013-10-29 08:35:32 | 显示全部楼层
顶一下。

出0入0汤圆

发表于 2013-12-5 10:51:06 | 显示全部楼层
先收藏了

出0入0汤圆

发表于 2013-12-5 12:00:34 | 显示全部楼层
MARK,标记备用

出0入0汤圆

发表于 2014-1-1 11:29:06 | 显示全部楼层
正要用fft,学习了。

出0入0汤圆

发表于 2014-1-1 11:41:42 | 显示全部楼层
搞一个mdk的吧

出0入0汤圆

发表于 2014-4-16 16:33:26 | 显示全部楼层
f4的dsp库使用 mark

出0入0汤圆

发表于 2014-4-16 17:00:46 | 显示全部楼层
谢谢 分享

出0入0汤圆

发表于 2014-5-18 07:28:46 | 显示全部楼层
多谢。。。

出0入0汤圆

发表于 2014-5-18 07:37:19 | 显示全部楼层
不错的算法,很实用。在信号处理的时候~

出0入0汤圆

发表于 2014-8-16 09:51:16 | 显示全部楼层
你这个纯粹是口水贴  贴一个官网的标准的CMSIS的例子 就出来了  重要的东西 你都没贴出来  基4 转换的时候需要补零的1024点的  FFT 至少需要2048的数组

出0入0汤圆

发表于 2014-8-27 18:50:22 | 显示全部楼层
K=-273.15℃ 发表于 2014-8-16 09:51
你这个纯粹是口水贴  贴一个官网的标准的CMSIS的例子 就出来了  重要的东西 你都没贴出来  基4 转换的时候 ...

FFT出来的结果是实部+虚部

出0入0汤圆

发表于 2014-8-27 19:07:21 | 显示全部楼层
还没用过F4   不知道跟F1 有什么区别

出0入0汤圆

发表于 2014-10-11 21:37:42 来自手机 | 显示全部楼层
我在激动啊,我们快学到快速傅里叶变换了。。。真想看看到底怎么运用理论基础的

出0入0汤圆

发表于 2014-10-11 21:47:38 | 显示全部楼层
学习了     

出0入0汤圆

发表于 2014-10-11 22:09:24 | 显示全部楼层
谢谢分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 10:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表