This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

28377D CLA

你好:TI专家

采用芯片F28377D芯片,CCS9.1.3 编译软件,采用SYS/BIOS 编写。

问题1:在CLA文件中,采用C语言格式编程,CLA部分原代码如下:


#include "LnPcsStandardCla1.h"
#include "CLAmath.h"
#include "iPARK_CLA.h"
#include "iCLARKE_CLA.h"

__interrupt void Cla1Task7 ( void )
{


(line150)   ipark0.d = 1000;
ipark0.q = 0;
ipark0.cos = Cputocla.costhea;
ipark0.sin = Cputocla.sinthea;
ipark0.z = 0;
iPARK_CLA_MACRO(ipark0);

(line157) iclarke0.alpha = ipark0.alpha;
iclarke0.beta = ipark0.beta;
iclarke0.zero = ipark0.zero;
iCLARKE_CLA_MACRO(iclarke0);

(line162)cla1out.clatempx = ipark0.alpha;
cla1out.clatempy = ipark0.beta;

(line165)cla1out.clatempa = iclarke0.a;
              cla1out.clatempb = iclarke0.b;
(line167)cla1out.clatempc = iclarke0.c;

函数为TI官方的例程文件中的例程。

上述中的"(line 150)"等为我粘贴时手动添加的。运行时由非0的运行结果,但是数据不对;单步执行时,不是按照先后顺序执行语句,且出现先后交叉的执行。

观察编译输出的.asm文件,这部分代码如下:

.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 150,column 5,is_stmt,isa 0
MMOVIZ MR0,#17530 ; [CPU_FPU] |150|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 154,column 5,is_stmt,isa 0
MMOVIZ MR1,#0 ; [CPU_FPU] |154|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 153,column 5,is_stmt,isa 0
MMOV32 MR2,@_Cputocla+18 ; [CPU_FPU] |153|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 150,column 5,is_stmt,isa 0
MMOV32 @_ipark0+10,MR0 ; [CPU_FPU] |150|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 154,column 5,is_stmt,isa 0
MMOV32 @_ipark0+14,MR1 ; [CPU_FPU] |154|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 151,column 5,is_stmt,isa 0
MMOVIZ MR0,#0 ; [CPU_FPU] |151|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 153,column 5,is_stmt,isa 0
MMOV32 @_ipark0+6,MR2 ; [CPU_FPU] |153|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 151,column 5,is_stmt,isa 0
MMOV32 @_ipark0+12,MR0 ; [CPU_FPU] |151|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 155,column 5,is_stmt,isa 0
MMPYF32 MR1,MR2,#0 ; [CPU_FPU] |155|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 152,column 5,is_stmt,isa 0
MMOV32 MR0,@_Cputocla+16 ; [CPU_FPU] |152|
MMOV32 @_ipark0+8,MR0 ; [CPU_FPU] |152|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 155,column 5,is_stmt,isa 0
MMPYF32 MR3,MR0,#17530 ; [CPU_FPU] |155|
MMPYF32 MR2,MR2,#17530 ; [CPU_FPU] |155|
MMPYF32 MR0,MR0,#0 ; [CPU_FPU] |155|
MADDF32 MR2,MR0,MR2 ; [CPU_FPU] |155|
MMOVIZ MR0,#0 ; [CPU_FPU] |155|

MMOV32 @_ipark0+4,MR0 ; [CPU_FPU] |155|
|| MSUBF32 MR1,MR3,MR1 ; [CPU_FPU] |155|

.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 159,column 5,is_stmt,isa 0
MMOVIZ MR0,#0 ; [CPU_FPU] |159|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 155,column 5,is_stmt,isa 0
MMOV32 @_ipark0,MR1 ; [CPU_FPU] |155|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 157,column 5,is_stmt,isa 0
MMOV32 @_iclarke0+6,MR1 ; [CPU_FPU] |157|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 162,column 5,is_stmt,isa 0
MMOV32 @_cla1out+6,MR1 ; [CPU_FPU] |162|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 159,column 5,is_stmt,isa 0
MMOV32 @_iclarke0+10,MR0 ; [CPU_FPU] |159|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 160,column 5,is_stmt,isa 0
MADDF32 MR0,MR1,#0 ; [CPU_FPU] |160|
MMOV32 @__cla_Cla1Task7_sp+2,MR0 ; [CPU_FPU] |160|
MMOV32 @_iclarke0,MR0 ; [CPU_FPU] |160|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 155,column 5,is_stmt,isa 0
MMOV32 @_ipark0+2,MR2 ; [CPU_FPU] |155|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 158,column 5,is_stmt,isa 0
MMOV32 @_iclarke0+8,MR2 ; [CPU_FPU] |158|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 160,column 5,is_stmt,isa 0
MMOVIZ MR0,#16221 ; [CPU_FPU] |160|
MMOVXI MR0,#46039 ; [CPU_FPU] |160|

MMPYF32 MR3,MR0,MR2 ; [CPU_FPU] |160|
|| MMOV32 @_cla1out+8,MR2 ; [CPU_FPU] |163|

MMPYF32 MR0,MR1,#48896 ; [CPU_FPU] |160|

MADDF32 MR0,MR3,MR0 ; [CPU_FPU] |160|
|| MMOV32 @__cla_Cla1Task7_sp+4,MR0 ; [CPU_FPU] |160|

MADDF32 MR0,MR0,#0 ; [CPU_FPU] |160|
MMOV32 @__cla_Cla1Task7_sp+0,MR0 ; [CPU_FPU] |160|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 163,column 5,is_stmt,isa 0
MMOV32 MR1,@__cla_Cla1Task7_sp+2 ; [CPU_FPU] |163|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 165,column 5,is_stmt,isa 0
MMOV32 @_cla1out,MR1 ; [CPU_FPU] |165|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 160,column 5,is_stmt,isa 0
MMOV32 @_iclarke0+2,MR0 ; [CPU_FPU] |160|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 165,column 5,is_stmt,isa 0
MMOV32 MR1,@__cla_Cla1Task7_sp+0 ; [CPU_FPU] |165|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 160,column 5,is_stmt,isa 0
MMOV32 MR0,@__cla_Cla1Task7_sp+4 ; [CPU_FPU] |160|

MSUBF32 MR0,MR0,MR3 ; [CPU_FPU] |160|
|| MMOV32 @_cla1out+2,MR1 ; [CPU_FPU] |166|

MADDF32 MR0,MR0,#0 ; [CPU_FPU] |160|
MMOV32 @_iclarke0+4,MR0 ; [CPU_FPU] |160|
.dwpsn file "../prjsource/LnPcsStandardCla1.cla",line 167,column 5,is_stmt,isa 0
MMOV32 @_cla1out+4,MR0 ; [CPU_FPU] |167|
MNOP ; [CPU_FPU]
MNOP ; [CPU_FPU]
MNOP ; [CPU_FPU]

观察编译结果,可以看出不是.cla文件代码的按照 先后顺序编译的,且有的代码行没有编译。

请问为什么会出现这种状况,如何改正?