关于STM32F29中FFT应用

2019-07-20 17:48发布

#define FFT_LENGTH                256                 //FFT长度,默认是1024点FFT

float fft_inputbuf[FFT_LENGTH*2];        //FFT输入数组
float fft_outputbuf[FFT_LENGTH];        //FFT输出数组

u8 timeout;

int main(void)
{
    arm_cfft_radix4_instance_f32 scfft;
        u8 key,t=0;
        float time;
        u16 i;
        u16 adcx;
        float temp;
       
       
    HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    uart_init(115200);              //初始化USART
    LED_Init();                     //初始化LED
    KEY_Init();                     //初始化按键
    SDRAM_Init();                   //初始化SDRAM
    MY_ADC_Init();                  //初始化ADC1通道5

    TIM3_Init(65535,90-1);          //10Khz计数频率,最大计时65ms秒超出
        arm_cfft_radix4_init_f32(&scfft,FFT_LENGTH,0,1);//初始化scfft结构体,设定FFT相关参数       
       
       
    while(1)
        {
                for(i=0;i<2*FFT_LENGTH+1;i++)//生成信号序列
                        {
                                 adcx=Get_Adc_Average(ADC_CHANNEL_5,1);
                                 fft_inputbuf[2*i]=adcx;//生成输入信号实部
                                 fft_inputbuf[2*i+1]=0;//虚部全部为0
                                 temp=(float)adcx*(3.3/4096);
                                 printf(" the voltage:%fV ",temp);
                                 LED0=!LED0;
                        }
       

                LED1=!LED1;
                        arm_cfft_radix4_f32(&scfft,fft_inputbuf);        //FFT计算(基4)
                        printf("FFT Result: ");
                        for(i=0;i<FFT_LENGTH;i++)
                        {
                                printf("fft_outputbuf[%d]:%f ",i,fft_outputbuf[i]);
                        }
       
        }  
}


在main函数中,FFT_LENGTH设置为64,程序执行正常,FFT_LENGTH设置为256时,for循环执行一次就结束了,不再执行LED1=!LED1,请高手指点迷津!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。