BF592用visual DSP++编译,调用官方C库里提供的rfft_fr32函数时,参数输入数组有长度限制吗?输入数组里的每个元素有大小限制吗?为什么我计算结果的输出数组元素溢出了呢,全都显示4.29496e+009,正好是2的32次方。
#include <cdefBF592-A.h>
#include <ccblkfn.h>
#include <fract.h>
#include <filter.h>
#include <stdio.h>
#include "cpu.h"
#include "uart.h"
#define FFT_SIZE 128
#define TWID_SIZE (FFT_SIZE/2)
fract32 in[FFT_SIZE]={10000,14794,18415,19975,19093,15985,11411,6492,2432,225,411,2945,7206,12151,16570,19380,19894,17985,14121,9248,4560,1203,0,1245,4634,9337,14202,18038,19906,19349,16503,12065,7121,2882,386,244,2490,6575,11499,16055,19129,19968,18367,14716,9911,5128,1538,19,944,4086,8676,13591,17626,19794,19564,16992,12709,7762,3364,590,120,2069,5960,10840,15514,18839,19999,18711,15291,10575,5718,1910,82,683,3565,8022,12964,17180,19638,19736,17451,13342,8414,3874,835,39,1682,5362,10177,14949,18509,19986,19018,15842,11236,6327,2317,189,462,3071,7376,12324,16702,19440,19866,17877,13959,9072,4412,1120,2,1332,4784,9514,14362,18142,19929,19285,16367,11891,6952,2759,339,284,2608,6742,11674,16195};
complex_fract32 out[FFT_SIZE];
complex_fract32 twiddle[TWID_SIZE];
int block_exponent;
void main()
{
int i=1;
Set_PLL(16,4); //内核时钟:25MHz*16=400MHz,系统时钟:400MHz/4=100MHz
Init_gpio(); //初始化GPIO口
uart_device_init();//初始化串口
delay_Uart(500);
uart_device_ioct(19200); //初始化波特率19200
twidfftrad2_fr32(twiddle, FFT_SIZE);
rfft_fr32 (in, out, twiddle, 1, FFT_SIZE, &block_exponent, 2);