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.

TMS320F280045: TMS320F280045基于CCS10.0数据计算错误的问题。

Part Number: TMS320F280045

TMS320F280045基于CCS10.3.1.00003_win64软件编译环境,出现数据计算错误的问题,将有符号32位数据强制转换为有符号16位也出现错误,本身转换后应该在-32768~32767范围,实际偶尔会出现65535或-65535这类奇怪的数据。以下代码 int32 iTempLAAx; Uint16 TempAx; if(Mscnt % 10 == 0){TempAx = 32606;} if(Mscnt % 10 == 1){TempAx = 32617;} if(Mscnt % 10 == 2){TempAx = 32607;} if(Mscnt % 10 == 3){TempAx = 32609;} if(Mscnt % 10 == 4){TempAx = 32616;} if(Mscnt % 10 == 5){TempAx = 32612;} if(Mscnt % 10 == 6){TempAx = 32611;} if(Mscnt % 10 == 7){TempAx = 32608;} if(Mscnt % 10 == 8){TempAx = 32615;} if(Mscnt % 10 == 9){TempAx = 32613;} CurU = TempAx; if(CurU > 32622){CurU = 32622;} if(CurU < 32602){CurU = 32602;} iTempLAAx = (int)((int)CurU - (int)32612); if(iTempLAAx > 5){iTempLAAx = 5;} if(CurrentIw < -5){iTempLAAx = -5;} CurrentIu = iTempLAAx; DIANLIUU = CurrentIu; CurW = TempAx;//IW_RST; if(CurW > 32622){CurW = 32622;} if(CurW < 32602){CurW = 32602;} iTempLAAx = (int)((int)CurW - (int)32612); if(iTempLAAx > 5){iTempLAAx = 5;} if(iTempLAAx < -5){iTempLAAx = -5;} CurrentIw = iTempLAAx; DIANLIUW = CurrentIw; CurrentIv = - (int)(CurrentIu + CurrentIw); DIANLIUV = CurrentIv; 所有变量全部定义为有符号32位类型,其计算结果即使加了限制条件,仍然会出现65535、-65535,该问题很严重,请尽快回复,十分感谢。