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.

[参考译文] CC3220SF-LAUNCHXL:atol()问题

Guru**** 2538950 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1061107/cc3220sf-launchxl-atoll-question

器件型号:CC3220SF-LAUNCHXL

我想使用 atol()将字符串转换为无符号64位,但覆盖的值不正确。  
对于以下示例、只有字符串3是正确的。  字符串1和字符串的覆盖值已填充 FF 而不是00。  

uint64_t string1value、string2value、string3value;

字符串1[]="188900977659375";//0x0000ABCDEFABBCDEF
字符串2[]="28824171";//0x0000ABCDEFAB
字符串3[]="11259375";//0x0000000000ABCDEF

string1value =(uint64_t) atoll (string1);
string2value =(uint64_t) atoll (string2);
string3value =(uint64_t)环礁(string3);

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

    您好、Leo、

    我无法重现您的问题。 请参阅下图、唯一的区别是我使用 volatile 强制编译器允许我在调试器中显示变量。 您可以发布 SDK 版本和 CCS 版本吗? 您是否使用 SDK 中的示例项目?  

    如果您没有最新的 SDK 和 CCS 版本、可以尝试更新它们吗? 我使用的是 TI 驱动程序中的 TIRTOS "empty"项目(不是 TIRTS7)。  

    您是否包含了 stdlib.h?  

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

    你(们)好

    我使用的是 SDK 5_10_00_02和 CCS  10.3.0.00007。

    看起来该函数嵌套太深。
    我尝试将相同的代码放入项目的不同区域。 代码在 mainThread()中工作。

    这些代码被放置在 tcpWorkers 函数下面的嵌套两级函数中

    tcpWorker()  
    |-------- praseACKCommand()
           |------ third_level_function ()

    如果将相同的代码放入 tcpWorker()和 praseACKCommand()中,则该代码运行良好。 请参阅屏幕截图 A

    如果 将它们 放入 third_level_function 中、则 效果不好。 请参阅屏幕截图 B

    Screenshot B Fail

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

    您好、Leo、

    两项建议:

    1.您能否尝试使用函数 strtoull 而不是 atoll?

    2.是否可以尝试更新 CCS 和 SDK 版本?

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

    我将尝试一下~

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

    另请尝试关闭任何编译器优化。