⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft.c

📁 该代码采用c5400dsp的汇编语言和c语言实现快速傅立叶变换
💻 C
字号:
#include <math.h>
#include <tms320.h>
#include <dsplib.h>
/*-------------------------------------*/
int ser0inrdcnt,ser0outwrcnt;							/*Bsp0 Receive Buffer Read Pointer,Transmit Buffer Writer Pointer */
int ser0inwrcnt,ser0outrdcnt;							/*Bsp0 Receive Buffer Writer Pointer,Transmit Buffer Read Pointer */
int ser0inbuf[40],ser0outbuf[40];						/*Bsp0 Receive Buffer And Transmit Buffer */
int ser0flag,int0flag,timeflag,hpirecflag;              /*Define Some Global Variable */
extern int ad_samp_freq;								/*To Decide The AIC Sample Frequency*/
/*-------------------------------------*/

DATA fftbuf[256];
#pragma DATA_SECTION(fftbuf,".dbuffer1024")
void main()
{ 
char  fftcount = 0;
char  fftnum;
char  ffti;
DATA  sqrtin[1],sqrtout[1];
	ad_samp_freq = 1026; 
	c54_init(); 
	ser0inwrcnt = 1 ;
	ser0outrdcnt = 5 ;
	ser0inrdcnt = 5 ;
	ser0outwrcnt = 1;
	ser0flag = 0;
	for (;;){   
   		if (ser0flag >= 1){    
			ser0inrdcnt = (ser0inrdcnt+1)%40;
			ser0outwrcnt =(ser0outwrcnt+1)%40;
 			ser0outbuf[ser0outwrcnt] =ser0inbuf[ser0inrdcnt] ;
			fftbuf[fftcount] = ser0inbuf[ser0inrdcnt] ;
			ser0outbuf[ser0outwrcnt] = ser0inbuf[ser0inrdcnt] ;
			fftcount = fftcount + 1 ;
			if (fftcount == 256)
				cbrev(fftbuf,fftbuf,fftnum/2);
			if (fftnum == 32)
				rfft(fftbuf,32,1);
			if (fftnum == 64)
               	rfft(fftbuf,64,1);
			if (fftnum == 128)
               	rfft(fftbuf,128,1);
			for (ffti=0;ffti<fftnum/2;ffti++){
				sqrtin[0]=fftbuf[2*ffti]*fftbuf[2*ffti] + fftbuf[2*ffti+1]*fftbuf[2*ffti+1];
				sqrt_16(sqrtin,sqrtout,1);
				fftbuf[ffti] = sqrtout[0];
			}	            
            fftcount = 0 ;    
   			ser0flag = 0;
		}
	}  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -