这段程序我主要是想通过硬件仿真看看运算结果,程序如下:
定义全局变量
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。
|