zhangchunbuaa 发表于 2016-3-30 11:29

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

玄德 发表于 2016-3-30 11:41


必须先定义,再使用。
不能倒过来。

提示是这么说的。


JY-DX-JY 发表于 2016-3-30 11:52

前面好像有执行语句。。。。。。。。。。。。。。。。。。。。。。。。

zhangchunbuaa 发表于 2016-3-30 14:26

        后面的程序是这样的,应该怎么改呢?

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();
                }

zhangchunbuaa 发表于 2016-3-30 22:28

把数组定义在主函数外面就好了,已经解决了
页: [1]
查看完整版本: DSP程序中定义的数组总报错是怎么回事