最近在做基于STM32的FFT变换,将AD采集到的电压进行FFT变换,AD采集已经完成,但是FFT变换遇到点问题,求大神帮忙看看!!

2019-07-20 18:35发布

具体是这样的,我用的官方DSP库,查了一些资料,写了一个简单的内部生成正弦波并进行FFT变换,但是在编译的时候出现了很多错误,先贴上程序,希望大家帮忙看看哪里有问题,挺急的,感激不尽!!

#include "stm32f4xx.h"
#include "./usart/bsp_debug_usart.h"
#include "bsp_adc.h"
#include "systick.h"


#include "arm_math.h"
#include "arm_const_structs.h"
#include "stdio.h"
#include "string.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;

/**
  * @brief  Ö÷oˉêy
  * @param  ÎT
  * @retval ÎT
  */
int main(void)
{
        uint16_t i;
       
  /*3õê¼»ˉUSART ÅäÖÃÄ£ê½Îa 115200 8-N-1£¬ÖD¶Ï½óêÕ*/
  Debug_USART_Config();
        ADC_Configuration();
        SysTick_Init();
       

        /**按照实部、虚部的顺序存储*/
        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 ", testOutput[i]);
        }

}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
andone
1楼-- · 2019-07-20 19:28
最开始提示我没有ARMCM4.h头文件,等我添加完之后,又说缺少system_ARMCM4.h文件,而且头文件里面还有一大堆的错误,有没有谁遇到过这种问题呢,

正点原子
2楼-- · 2019-07-20 21:06
帮顶

一周热门 更多>