TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

该讨论已被锁定。
您不能再向该讨论中发布新回复。如果您有问题可以开始新讨论

[参考译文] 编译器/TMS320F28335:如何使用 C2000编译器 v5.2.6检查 NaN

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/802155/compiler-tms320f28335-how-should-i-check-nan-with-c2000-compiler-v5-2-6

器件型号:TMS320F28335

工具/软件:TI C/C++编译器

尊敬的专家工程师:

我想知道如何检查 F28335上的 NaN。

Nan 和 isnan ()不是由 math.h 提供的

请告诉我如何操作?

---- 我尝试按如下方式进行检查

FLOAT32* test_na_pf;
uint32 test_long;

TEST_long = 0xFFFFFFFF;
test_na_pf =(FLOAT32*)&test_long;

if (FLT_min >* test_no_pf){

 法官_1 = 1;

if (FLT_MAX <* TEST_NAN_pf){
 法官_2 = 1;

->结果

  法官_1 = 1、法官_2 = 0

----

此致、

Hidehiko

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

    Nan 是两个都为 true 时的值:指数= 0xFF 和尾数!= 0。
    指数= 0xFF 且尾数= 0时为无穷大。
    那么、类似这样的东西:

    #define IsNaN (x)((*(UINT32*)&(x)&~0x8000000)> 0x7F800000)

    掉线符号位、您得到0..0x7FFFFFFF。 然后与正无穷大进行比较。


    C2000编译器具有预定义的内在函数、可将浮点视为 uint32、__f32_bits_as_u32 (x)、等等

    #define IsNaN (x)(((__F32_bits_as_u32 (x)&~0x800000)> 0x7F800000)



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

      尊敬的 Edward:

      感谢你的答复。

      我理解您的意思。

      此致、

      Hidehiko