DSP程序中定义的数组总报错是怎么回事
本帖最后由 zhangchunbuaa 于 2016-3-30 11:32 编辑float sina={0.000000,0.104528,0.207911,0.309016,0.406737,
0.500000,0.587785,0.669131,0.743145,0.809017,
0.866025,0.913545,0.951057,0.978148,0.994522,
1.000000,0.994522,0.978148,0.951057,0.913545,
0.866025,0.809017,0.743145,0.669131,0.587785,
0.500000, 0.406737,0.309016,0.207911,0.104528};
float sinb={0.866025,0.809017,0.743145,0.669131,0.587785,
0.500000,0.406737,0.309016,0.207911,0.104528,
0.000000,-0.104528,-0.207911,-0.309016,-0.406737,
-0.500000,-0.587785,-0.669131,-0.743145,-0.809017,
-0.866025,-0.913545,-0.951057,-0.978148,-0.994522,
-1.000000,-0.994522,-0.978148,-0.951057,-0.913545};
我在CCS3.3源程序中定义了两个数组,但是总是报错,是怎么回事?
"SPWM2.c", line 70: error: declaration may not appear after executable statement in block
"SPWM2.c", line 76: error: declaration may not appear after executable statement in block
必须先定义,再使用。
不能倒过来。
提示是这么说的。
前面好像有执行语句。。。。。。。。。。。。。。。。。。。。。。。。 后面的程序是这样的,应该怎么改呢?
while(1)
{
if((i>=0)&&(i<N/2))
{
EPwm1Regs.CMPA.half.CMPA =EPwm1Regs.TBPRD*((1.0+M*sina)/2.0);
EPwm2Regs.CMPA.half.CMPA =EPwm1Regs.TBPRD*((1.0+M*sinb)/2.0);//更新比较寄存器2的值
EPwm1Regs.CMPA.half.CMPA =EPwm1Regs.TBPRD*((1.0-M*(sina+sinb))/2.0);//更新比较寄存器3的值
}
if((i>=N/2)&&(i<N))
{
EPwm1Regs.CMPA.half.CMPA =EPwm1Regs.TBPRD*((1.0-M*sina)/2.0);
EPwm2Regs.CMPA.half.CMPA =EPwm1Regs.TBPRD*((1.0-M*sinb)/2.0);//更新比较寄存器2的值
EPwm1Regs.CMPA.half.CMPA =EPwm1Regs.TBPRD*((1.0+M*(sina+sinb))/2.0);//更新比较寄存器3的值
}
i++;
if(i>=N)i=0;
SPwmSetup();
}
把数组定义在主函数外面就好了,已经解决了
页:
[1]