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.

[参考译文] CCS/TMDSCNCD28035:CSS _IQ 至悬空

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/679510/ccs-tmdscncd28035-css-_iq-to-float

器件型号:TMDSCNCD28035

工具/软件:Code Composer Studio

我想将两个数字相乘、在某些情况下它不起作用。

在这种情况下,它运行良好:

_iq a=_IQ (10.0);

float32 b=2.5;

x =_IQtoF (_IQmpy (_IQ (b)、a));//得到浮点25

但在这种情况下、它不能正常工作

float32 q=0.0;_iq

Y1=_IQ (1.5);

q =_IQtoF (_IQmpy (_IQ (100)、Y1));// 结果 shoud 为150、但在 viewwatch 中为-1026293761

我尝试改变 IQ、例如_IQ20 (100)、_IQ21 (100)..... 但我得不到正确的结果。

需要在代码中更改的内容

感谢您的回答

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

    您好!

    [引用 user="Valentin Vanyo"] float32 q=0.0;_iq[/quot]

    _IQ 在这里做什么?

    [引用用户="Valentin Vanyo"]Y1=_IQ (1.5);

    Y1是如何初始化的? 它应该是_IQ Y1;以某种方式_IQ 已移至上方行。

    [引用 user="Valentin Vanyo"]q =_IQtoF (_IQmpy (_IQ (100)、Y1));// 结果 shoud 为150,但在 viewwatch 中为-1026293761

    使用_IQ (100.0)尝试

    此致、

    Gautam

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

    对于最后一个器件、您不能以 IQ14格式表示150。 7个整数位将您限制为+128最大值 如果您尝试将100乘以1.5、则会出现溢出、您将得到-1026293761、正如您所观察到的。

    您需要在 IQmathLib.h 中选择一个差分 global_Q、或者使用一个本地不同的 IQ 格式和 IQmpy 函数。

    此致、

    Richard