#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,请高手指点迷津!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>