TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28335: 对自定义存储位置的变量无法赋值

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

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28335: 对自定义存储位置的变量无法赋值
分享到: 更多 (0)