请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F280049C 编译器版本:TI v22.6.0.LTS
您好!
我发现在我的程序中、使用 int32_t 和 int16_t 的乘法会导致 ALU 出现问题、导致计算结果只有最低有效16位有效、而最高有效16位由于溢出被清除。 因此、我必须将这两个变量声明为 int32_t、以确保计算结果符合预期。
但是、现在我有一个表达式涉及将变量乘以#define 常量、似乎无论什么、该常量在 ALU 中始终声明为16位。 我是否可以将此常量设置为32位或修改工程属性等其他方法来确保计算结果正确?
在其他基于 ARM 的 MCU 中、我从未遇到过遵守较小声明并导致溢出清除问题的问题。 我也使用相同的 TI 编译器(@TM4C123x)进行开发而不会出任何问题。 因此、我是否应该合理地断定这是特定于 C2000平台的 ALU 问题?
谢谢。