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.

[参考译文] TMS320F280049:对于 CLA、在 Int16和 Int32之间转换负值

Guru**** 2553260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/921973/tms320f280049-casting-negative-value-between-int16-and-int32-for-cla

器件型号:TMS320F280049

尊敬的香榭丽舍

我向我们的客户提出这一问题。

他们对 CLA 的一些影响问题感到困惑。

他们编写的代码如下所示:

//在 xxx.cla 中

int16_T A;

//在 xxx.c 中

A =-7U;

//使用 CPU 到 CLA

#pragma DATA_SECTION (a、"CpuToClaMsgRAM");

//在 xxx.cla 中,将 Int16转换为 Int32

int32_T U;

U =(int32_T)(A);

//在 CCS 窗口中,

他们发现 U = 65529而不是-7。

但是、如果它们为 A 使用正值、则其工作正常。

您是否会向我展示其原因?

为什么将其视为无符号整型而不是有符号整型?

或者、在为 CLA 使用负整数值时是否有任何限制?

进行转换的正确方法是什么?

黄维恩

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

    韦恩、

    [引用用户="Wayne Huang"]

    A =-7U;

    [/报价]

    这里的"u"后缀告诉编译器将此字面量视为无符号整型。  我建议删除 U   

    话虽如此、我曾尝试过此案例、但无法再现。  即使带有'u'后缀也是如此。 在 CCS 中、在 CLA 调试上下文中、变量显示为 int、而不是无符号 int。   

    我想您只是看到一个显示问题-值为-7、但它已经显示为无符号数。

    确保未进行显示-即告知 CCS 以其他类型显示。  如果它已经被强制转换、那么它看起来就像下面的屏幕截图。 您可以右键单击变量、然后选择"恢复原始类型"。

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

    尊敬的 Lori:

    客户认为这与 CCS 显示无关、因为他们在后续代码中使用了变量、结果错误。

    您提到您没有复制此内容。

    请您将您的测试项目发送给我还是向我们展示?

    我认为还应该有一些我们尚未发现的问题。

    我还将离线向您发送他们的测试代码。

    黄维恩

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

    尊敬的 Lori:

    这与他们使用的类型定义有关。

    他们没有对 C28x 和 CLA 使用 TI 的类型定义。

    他们正在解决这一问题。

    感谢您的支持。

    黄维恩