#define NUM_FFT 128 // Length of FFT to process
#define PI 3.1415926
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
typedef struct
{
// s16 iRealArray[NUM_FFT];
// s16 iMageArray[NUM_FFT];
float iRealArray[NUM_FFT];
float iMageArray[NUM_FFT];
u16 FU[3]; //---基波电压---NNN.N6
u32 FI[4]; //---基波电流NNNN.NNNN
u32 HarmonicpercentU[51];
u32 HarmonicpercentI[51]; //---谐波含有率--NNN.N6
}sDl645FftHarmonicData_TypeDef;
typedef struct
{
u8 Channel; // 当前采样通道
u16 ReadAdress; // 读取地址
u8 StarFlag; // 开始进行谐波数据分析
u8 ADSPIBusy; // 进行谐波分析瞬时值数据采样
u16 DataCount; // 当前采样点数
u16 ReadAddres; // 采样点数据地址
u16 dwFreq; // 采样周期当前频率
u16 TimeOutStamp; // 采样延时退出
u8 InstantaneousData[384]; //当前采样128点瞬时数据
}sADE_Instantaneous_TypeDef; //ADE 自动数据输入
sADE_Instantaneous_TypeDef Harmonictemp;
sDl645FftHarmonicData_TypeDef HarmonicData;
void SampleDataModifyF(float *piRetValue) //采样数据修正
{
u8 i;
u32 Temp;
for(i=0; i<NUM_FFT; i++)
{
piRetValue = 0;
Temp = 0;
memcpy((u8 *)&Temp , &(Harmonictemp.InstantaneousData[i*3]) , 3);
if(Temp &0x800000)
{
Temp = (0xffffff - Temp) + 1;
piRetValue = -(float)Temp/8388608;
}
else piRetValue = (float)Temp/8388608;
}
}
这里的Harmonictemp.InstantaneousData是结构体数组,怎么给他赋值?用另一个数组循环给它赋值??不能直接赋值吗?
还有memcpy((u8 *)&Temp , &(Harmonictemp.InstantaneousData[i*3]) , 3); 这里 i 为什么乘3,数组为什么要 384,我只要 128 就可以了啊??
这里的u8,u16,u32 有定义错吗?
不好意思,新人好多不懂 |