在CCS4编译器里单步调试程序,为什么会出现有些语句不能执行,也不能设置断点的情况?通过观察变量看结果,这些语句根本就没执行,但是编译肯定能通过的。
定义全局变量
long DutyFine;
long Ref ;
long TempInt;
long TEMP1;
long TEMP3;
主程序里调用函数VoltageAdj()
Void VoltageAdj(void)
{
TempInt=_IQ20(0.785);
Ref=_IQ20(0.62);
DutyFine =_IQ20sin(TempInt);
TempInt=_IQ20mpyIQX(DutyFine,20,Ref,20);
TEMP1=_IQ16mpyIQX(TempInt,20,1500,0);
input=TEMP1;
TEMP1=TEMP1>>16;
TEMP3=(1500-TEMP1)>>1;
TEMP1=TEMP3+TEMP1;
DutyFine=_IQ29(3.14159);
input=TempInt;
}
红色部分为函数不能执行的语句,硬件仿真时,程序直接从TempInt=_IQ20mpyIQX(DutyFine,20,Ref,20); 这一句跳到了DutyFine=_IQ29(3.14159);
跨过来了红色部分,导致程序运行不对。其中红色部分也不能设置断点。非红色部分程序能正常运行,结果正确。CCS版本为4.12。