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.

[参考译文] TMS320F2.8027万:在监视窗口中使用IQmath和错误时出现警告

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/618039/tms320f28027-warning-during-using-iqmath-and-error-in-watch-window

部件号:TMS320F2.8027万

我正在使用CCSv6

a)我的代码如下所示

#Define PI 3.1.4159万

_iq29 in2,OUT2;
in2 =_IQ29 (0.25 *PI);
OUT2 =_IQ29cos (in2);

b)我收到以下警告

键入#1.6002万-D build attribute vendor section TI missing in "../IQmatx.lib<IQ24cs.obj>":无法确定兼容性

#1.6002万-D Build属性vendor section TI缺少"../IQmath.lib<IQmathTables.obj>":无法确定兼容性

 类型#552-D变量"OUT2"已设置但从未使用

C)当我将上述变量放在监视窗口中并运行程序时,我得到了有关这些变量的以下说明

OUT2   未知错误:找不到标识符:OUT2  
输入2     未知错误:未找到标识符:in2.

d)但是,当我暂停程序时,我会获得一些变量值

OUT2379625302   (但右侧值为3.79625062亿)
in2421657088   (但右侧值为4.21657072亿)

e)我的问题

1.为什么我同时收到IQ数学和变量(已设置但从未使用)的警告  

2.为什么在运行模式下,我无法看到变量的值。但是,当暂停时,我可以看到

3.钙化和CCS显示的值之间为何存在差异

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ashutosh,

    1.为什么我同时收到IQ数学和变量(已设置但从未使用)的警告

    -兼容性警告是无害的。  您可以在此处找到更多信息:

    -您正在获取本地变量的“已设置但从未使用”警告,该局部变量被指定了一个值,然后从未使用过。  这有助于了解您是否正在进行编码,但如果您要禁止显示消息,可以通过更改上面Wiki说明中的警告编号来执行此操作。

    2.为什么在运行模式下,我无法看到变量的值。但是,当暂停时,我可以看到

    -在正常调试模式下,CCS Expressions窗口仅在CPU停止时更新。  由于变量是局部变量(我认为是局部变量),因此CCS在程序运行之前不知道其值,因此在您停止CPU之前,它会显示"identifier not found"(找不到标识符)。 如果变量是全局变量,则在运行CPU之前,您会看到它们的值。

    如果要在程序运行时实时检查变量,可以调用实时调试模式。  在C2000为期1天的研讨会中,将会有更多关于此问题的信息,此处为:

    3.钙化和CCS显示的值之间为何存在差异

    这是有限数字精度的伪影。  您使用的是32位定点机器。  当两个32位整数相乘时,结果是一个必须缩放(右移)的64位整数,因此结果与操作数格式相同(32位整数)。  右侧移位是IQ乘法的一部分,发生这种情况时精度会丢失。  这适用于"in2"。  对于"OUT2",余弦函数中引入了少量额外错误(请参阅IQ数学用户指南第64页)。

    此致,

    Richard