Part Number:TMS320F28335
由于FFT的需要,我用#pragma DATA_SECTION将数组定义到了特定位置,但之后无法对其赋值,代码如下
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
#include "math.h"
#include "float.h"
#include "FPU.h" //dsp 浮点运算库
typedef struct rfft;
#define PI 3.1415926 //定义圆周率
#define Fs 1000 //定义采样频率 Hz
#define F1 100 //信号频率 Hz
#define F2 20
#define Sample_points 1024 //采样点数
#define RFFT_STAGES 10 //RFFT运算阶数
#define RFFT_SIZE 1024
float32 a[1024];
float32 signal1[1024];
float32 signal2[1024];
float32 signal3[1024];
#pragma DATA_SECTION(RFFTin1Buff,"RFFTdata1");
float32 RFFTin1Buff[1024];
#pragma DATA_SECTION(RFFToutBuff,"RFFTdata2");
float32 RFFToutBuff[1024];
#pragma DATA_SECTION(RFFTmagBuff,"RFFTdata3");
float32 RFFTmagBuff[513];
#pragma DATA_SECTION(RFFTF32Coef,"RFFTdata4");
float32 RFFTF32Coef[1024];
RFFT_F32_STRUCT rfft;
void main(void)
{
Uint16 i;
float t;
for(i=0;i<1024;i++)
{
t = i*1.0/Fs;
signal1[i] = sin(2*PI*F1*t);
signal2[i] = sin(2*PI*F2*t);
signal3[i]= signal1[i]+signal2[i];
}
InitSysCtrl(); //没有硬件支撑时,予以注销
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
// 清空输入缓存
for(i=0; i < 1024; i++)
{
RFFTin1Buff[i] = 0.0f;
}
// 测试样例波形
for(i=0; i < 1024; i++)
{
RFFTin1Buff[i]=signal1[i]; // 实部输入信号
a[i]=signal1[i];
}
rfft.FFTSize = 1024; // FFT变换的长度,FFTSize=2^stage
rfft.FFTStages = 10; // 傅里叶变换的阶数
rfft.InBuf = &RFFTin1Buff[0]; // 输入数组
rfft.OutBuf = &RFFToutBuff[0]; // 输出数组
rfft.CosSinBuf = &RFFTF32Coef[0]; // 转化因子数组
rfft.MagBuf = &RFFTmagBuff[0]; //
RFFT_f32_sincostable(&rfft); // 计算傅里叶变换的转化因子 Calculate twiddle factor
RFFT_f32(&rfft); //实数傅里叶变换
RFFT_f32_mag(&rfft); //计算幅值 Calculate magnitude
for(;;);
}
明明给RFFTin1Buff数组赋值了,可该数组却为0
以下为cmd的修改
请问这是为什么,该如何改呢
Green Deng:
你好,这个问题为你升级至英文E2E论坛了,还请留意帖子回复:e2e.ti.com/…/tms320f28335-variable-cannot-be-assigned-a-value