1
/* 全局变量或全局数组放在 .bss 中
局部变量或局部数组放在 辅助寄存器(ARx)或数据堆栈中 (临时)
*/
/**********************FFT.C*************************/
/** DIT-FFT 时间域抽取 FFT(基-2 FFT 算法) **/
/** 软件算法及流程见黄皮书《数字信号处理》P102-P105**/
/****************************************************/
#include <math.h>
#define PI 3.1415926
#define N 128
#define M 7
#define A0 255.0 //定义输入波形的幅值
//float SinIn[N];
void main(void)
{
int i,j,k;
int p,J,L,B;
float SinIn[N];
float dataR[N],dataI[N];
float dataA[N];
float Tr,Ti,temp;
//输入波形
for(i = 0; i < N; i++)
{
SinIn[i] = A0 * (sin(2 * PI * i / 25 )+sin(2 * PI * i * 0.4 ));
//SinIn[i] = A0 * sin(2 * PI * i / N );
dataR[i] = SinIn[i]; //输入波形的实数部分
dataI[i] = 0; //输入波形的虚数部分
dataA[i] = 0; //输出波形的幅度谱为 0
}
//输入序列倒序
j = N / 2;
//第 0 个数(二进制数都为 0)和最后一个第 N-1 个数(二进制数都为 1)不需倒序
for(i = 1; i < N - 2; i++)
{
if(i < j)
{
temp = dataR[i];
dataR[i] = dataR[j];
dataR[j] = temp;
评论0