请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR5994 我在IQmathlib中看到对其他目标的支持,但MSP430FR5994没有支持。 MSP430IQmathLib用户指南显示了对IQN的支持,N= 1至30。
我的最终目标是以某种可读形式“打印”IQ31值。 因此,转换为float或ASCII是很好的。
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.
我在IQmathlib中看到对其他目标的支持,但MSP430FR5994没有支持。 MSP430IQmathLib用户指南显示了对IQN的支持,N= 1至30。
我的最终目标是以某种可读形式“打印”IQ31值。 因此,转换为float或ASCII是很好的。
您好,Dale,
您可以将IQ31转换为IQ30,并使用 _IQ30toF和_IQ30toa函数,如下所示:
浮点结果=_IQ30toF (iq31Input >> 1); _IQ30toa (buffer,"%4.8f",iq31Input >> 1);
通常,IQ数学函数最多只支持IQ29或IQ30,因为许多函数的输入或结果超出IQ31的范围。 例如,TRIG功能最多只支持IQ29,因为输入或结果在+/- PI范围内,不适合IQ30或IQ31格式。 当使用大型IQ格式时,精度的差异很小,一些较复杂的函数只计算27或28位的结果。
对于参考单精度浮点,仅包含23位精度,在许多情况下,使用IQ23格式的浮点精度与单精度浮点一样高,而较大类型(如IQ29和IQ30)的精度将显著提高。 一个很好的例子是比较cosf (0.5)和_IQ29cos (_IQ29 (0.5))的结果与您从PC计算器获得的结果,IQ结果将更加准确。
希望这有助于回答您的问题,并为某些IQ类型不受支持提供一些理由:)
此致,
Brent Peterson