TI中文支持网
TI专业的中文技术问题搜集分享网站

全局变量数据异常

我们使用的是TMS320F28062这款芯片。电流电压采集计算过程中概率性出现异常数据1.#INF,1.#QNAN,出现在上电的一瞬间,或者在仿真状态下,程序运行的瞬间。

在ADC中断中计算电压BST.Vab,BST.Vbc

BST.Vab = ((float)AdcResult.ADCRESULT0 + (float)AdcResult.ADCRESULT10 – ADOffset.Vab)* AdjKCoef.Vab;
BST.Vbc = ((float)AdcResult.ADCRESULT1 + (float)AdcResult.ADCRESULT11 – ADOffset.Vbc)* AdjKCoef.Vbc;

某一次运行运行时出现BST.Vbc 为1.#QNAN时,鼠标将光标移变量BST.Vbc上方是显示:

  (x)= BST.Vc      float   -1.#QNAN 

name : BST.Vbc

       Default: -1.#QNAN 

       Hex:0xFFC07A86

       Decimal:-1.#QNAN 

       Octal:037760075206

       Binary:11111111110000000111101010000110

另外,将某些全局变量(这些变量与上述变量没有逻辑关系)定义位置往后挪几行,发现出现上述问题没有出现。

各位大侠,能帮忙解释原因吗?

               

mangui zhang:

最合理的做法是程序运行到中断后查看此数据的结果

比如在中断中打断点    进入后查看变量的值

我们使用的是TMS320F28062这款芯片。电流电压采集计算过程中概率性出现异常数据1.#INF,1.#QNAN,出现在上电的一瞬间,或者在仿真状态下,程序运行的瞬间。

在ADC中断中计算电压BST.Vab,BST.Vbc

BST.Vab = ((float)AdcResult.ADCRESULT0 + (float)AdcResult.ADCRESULT10 – ADOffset.Vab)* AdjKCoef.Vab;
BST.Vbc = ((float)AdcResult.ADCRESULT1 + (float)AdcResult.ADCRESULT11 – ADOffset.Vbc)* AdjKCoef.Vbc;

某一次运行运行时出现BST.Vbc 为1.#QNAN时,鼠标将光标移变量BST.Vbc上方是显示:

  (x)= BST.Vc      float   -1.#QNAN 

name : BST.Vbc

       Default: -1.#QNAN 

       Hex:0xFFC07A86

       Decimal:-1.#QNAN 

       Octal:037760075206

       Binary:11111111110000000111101010000110

另外,将某些全局变量(这些变量与上述变量没有逻辑关系)定义位置往后挪几行,发现出现上述问题没有出现。

各位大侠,能帮忙解释原因吗?

               

user3715352:

回复 mangui zhang:

因为不是每次都出错,所以调试的时候如果出现计算错误就进入软件断点。然后再观察各个变量的当前值。

赞(0)
未经允许不得转载:TI中文支持网 » 全局变量数据异常
分享到: 更多 (0)