你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用STM32F429的板子做fft变换

[复制链接]
这名比较叼 提问时间:2016-11-22 15:27 /
最近刚开始弄这个,下载了官方DSP库,版本是STM32F4xx_DSP_StdPeriph_Lib_V1.4.0,然后网上找了一段相关的程序,编译之后就出现了以下错误,然后我按照要求吧ARMCM4.h添加进去之后又出现新的错误,请各位帮忙看看,问题出在哪里。以下附代码跟截图
#include "stm32f4xx.h"
#include "./usart/bsp_debug_usart.h"
#include "bsp_adc.h"
#include "systick.h"

#include "core_cm4.h"
#include "arm_math.h"
#include "arm_const_structs.h"

#define TEST_LENGTH_SAMPLES 2048

/*******ÊäÈëÓëÊä³ö»º³å**********/
static float32_t testOutput[TEST_LENGTH_SAMPLES/2];
static float32_t testInput_f32_10khz[TEST_LENGTH_SAMPLES];

/**********±äÁ¿**********/
uint32_t fftSize = 1024;
uint32_t ifftFlag = 0;
uint32_t doBitReverse = 1;

uint32_t refIndex = 213, testIndex = 0;

// ADC1ת»»µÄµçѹֵͨ¹ýMDA·½Ê½´«µ½SRAM
extern __IO uint16_t ADC_ConvertedValue;

// ¾Ö²¿±äÁ¿£¬ÓÃÓÚ±£´æת»»¼ÆËãºóµÄµçѹֵ          
float ADC_Vol;




/**
  * @brief  Ö÷º¯Êý
  * @param  ÎÞ
  * @retval ÎÞ
  */
int main(void)
{
  /*³õʼ»¯USART ÅäÖÃģʽΪ 115200 8-N-1£¬ÖжϽÓÊÕ*/
  Debug_USART_Config();
        ADC_Configuration();
        SysTick_Init();
       
        uint16_t i;
        /**°´ÕÕʵ²¿¡¢Ð鲿¡¢Êµ²¿¡¢Ð鲿µÄ˳Ðò´æ´¢Êý¾Ý*/
        for(i=0; i<1024; i++)
        {
                        /*Ð鲿ȫ²¿ÖÃÁÁ*/
                        testInput_f32_10khz[i*2+1] = 0;
                        /*50HzÕýÏÒ²¨,²ÉÑùÂÊ1KHz ,×÷Ϊʵ²¿*/
                        testInput_f32_10khz[i*2] = arm_sin_f32(2*3.1415926f*50*i/1000);
        }
                        /**CFFT±ä»»******/
        arm_cfft_f32(&arm_cfft_sR_f32_len1024, testInput_f32_10khz, ifftFlag, doBitReverse);

        /****Çó½âÄ£Öµ*****/
        arm_cmplx_mag_f32(testInput_f32_10khz, testOutput, fftSize);
        /**´®¿Ú´òÓ¡³öÇó½âµÄÄ£Öµ**/
        for(i=0; i<1024; i++)
        {
                        printf("%f\r\n", testOutput[i]);
        }
       

}



收藏 1 评论14 发布时间:2016-11-22 15:27

举报

14个回答
这名比较叼 回答时间:2016-12-1 19:51:58

我再建了个工程,把所有其他部分都刨去了,就留个FFT,现在可以进行fft变换了
这名比较叼 回答时间:2016-11-22 15:28:29
这个是错误陈述
BAG}R$R1{Z9%%PU`]4@PU2O.png
assssdz 回答时间:2016-11-22 23:42:03
zengyi703-16313 回答时间:2016-11-23 08:10:51
第一个,ARM_MATH_CM7,ARM_MATH_CM4,ARM_MATH_CM3这个错误应该是说你没有定义用的是哪个内核的MCU,如果是用的MDK,可在如图所示的Define地方添加ARM_MATH_CM4。
         QQ截图20161123080642.jpg

第二个,是没找到ARMCM4.h这个头文件,请确认包含的路径下面有这个文件。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

这名比较叼 回答时间:2016-11-23 10:25:34
zengyi703-16313 发表于 2016-11-23 08:10
第一个,ARM_MATH_CM7,ARM_MATH_CM4,ARM_MATH_CM3这个错误应该是说你没有定义用的是哪个内核的MCU,如果是 ...

谢谢你的回答,内核后来添加了,这个错误已经解决,但是我再找到ARMCM4.h文件添加进去后,在ARMCM4头文件中出现了一大堆声明重复的错误(和STM32F429XX.H文件里面重复),后来我把重复的注释掉之后,又出现了新错误,,arm_cfft_f32()不是在arm_math里面定义过了吗,另外还有个arm_cfft_f32.c文件,这个也需要添加进去吗?C:\Users\Administrator\Desktop
CA1$[OXZO0}NH1$EGU_GZG2.png
0QZL7G8C@QLXI@LT1K{IE69.png
peter001 回答时间:2016-11-23 13:55:18
帮顶,先跑跑例子程序
这名比较叼 回答时间:2016-11-23 14:57:33
peter001 发表于 2016-11-23 13:55
帮顶,先跑跑例子程序

谢谢,程序就是我在网上查的,虽然没有完整的工程,但是都说是可行的,而且官方库做fft只需几个库函数就行,无奈编译出来错误百出,,
peter001 回答时间:2016-11-24 00:13:58
这名比较叼 发表于 2016-11-23 14:57
谢谢,程序就是我在网上查的,虽然没有完整的工程,但是都说是可行的,而且官方库做fft只需几个库函数就 ...

我记得st dsp库有例程
这名比较叼 回答时间:2016-11-24 17:40:09
peter001 发表于 2016-11-24 00:13
我记得st dsp库有例程

嗯,库里有,我现在做的就相当于把官方例程复制过来,再加上相应的头文件,但是总是出现声明、定义方面的错误,可能工程被我改的有点乱了,我重新建个工程试下
zero99 回答时间:2016-11-28 13:39:31
楼主解决了吗
小小超 回答时间:2016-11-28 14:24:19
我有STM32F103的FFT完整例程。编译可用。
这名比较叼 回答时间:2016-11-28 14:32:55
ts2000 发表于 2016-11-28 14:24
我有STM32F103的FFT完整例程。编译可用。

F1到F4貌似DSP库函数改了很多,另外你是用DSP库还是自己编fft函数呢,可以发我一份看看吗,我邮箱是1143737385@qq.com。谢谢
zbber 回答时间:2016-11-28 17:27:41
楼主加油,我们都看好你哦
liuxy236@tom.co 回答时间:2016-11-28 20:03:29
                              
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版