本帖最后由 TuBie 于 2011-10-3 16:47 编辑
使用1024点的FFT运算,使用ST提供的DSP库(版本2.0.0),代码如下:
u32 FFT_InputArray[1024],FFT_OutputArray[1024]; //用于存放输入和输出的数组
u32 ResultValue; //中间变量
u32 RealPart,ImagPart; //结果的实部和虚部
for(Index=0;Index<1024;Index++)
{
ResultValue = (u32)(100.0*(cos(20*2*3.1415926*Index*0.001)));//生成20Hz的模拟数据,采样率1kHz
FFT_InputArray[Index] = ResultValue&0xFFFF; //赋值到数组,低16位。
}
cr4_fft_1024_stm32(FFT_OutputArray, FFT_InputArray, 1024); //进行FFT运算
//以下代码用于计算模值
for(Index=0;Index<512;Index++)
{
RealPart = FFT_OutputArray[Index]>>16;
ImagPart = FFT_OutputArray[Index]&0xFFFF;
ChannelDataP[Index] = (u16)sqrt(RealPart*RealPart+ImagPart*ImagPart);
}
结果显示计算出来的模值要么是65535,要么是0.
哪位帮我看看怎么回事吧,多谢了! |