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.

[参考译文] CC2652R7:在显示 printf 之前执行格式化字符串时代码挂起

Guru**** 2755315 points

Other Parts Discussed in Thread: CC2652R7

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1307357/cc2652r7-code-got-hanging-when-executing-formatted-string-before-display-printf

器件型号:CC2652R7

您好  

使用的 SDK: simplelink_cc13xx_cc26xx_sdk_7_10_01_24

使用的代码:simple_peripheral_lp_CC2652r7_tirtos7_ticlang

EVK 使用: CC2652-R7开发套件

在使用以下代码时、在向显示屏 printf 发送字符串之前。 执行被挂起

va_list ap;
char str_buffer[71]={0};

va_start (ap、fmT);
vsnprintf (str_buffer、70、fmt、ap);
va_end (ap);

上面突出显示的部分将挂起。 没有这个部分它不是挂起的,但它将发送为非格式化字符串例如:"Hello World %d"。  能不能就这一问题提出任何解决方案?

display_printf (dispHandle、0、0、"%s"、str_buffer);

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

    器件型号:CC2652R7

    您好  

    使用的 SDK: simplelink_cc13xx_cc26xx_sdk_7_10_01_24

    使用的代码:simple_peripheral_lp_CC2652r7_tirtos7_ticlang

    EVK 使用: CC2652-R7开发套件

    在使用以下代码时、在向显示屏 printf 发送字符串之前。 执行被挂起

    va_list ap;
    char str_buffer[71]={0};

    va_start (ap、fmT);
    vsnprintf (str_buffer、70、fmt、ap);
    va_end (ap);

    上面突出显示的部分将挂起。 没有这个部分它不是挂起的,但它将发送为非格式化字符串例如:"Hello World %d"。  能不能就这一问题提出任何解决方案?

    display_printf (dispHandle、0、0、"%s"、str_buffer);

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

    您好!

    我不熟悉 vsnprintf()函数。 您能分享一下它的函数描述吗?

    此致、

    1月

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

    您好!

    我加入了这两个线程、因为它们似乎指的是相同的行为。 将来、如果可能、请避免发布重复的主题、因为这会延迟支持和问题解决。

    此致、

    1月

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

    大家好、Jan、

    这是"vsnprintf"函数链接

    https://linux.die.net/man/3/vsnprintf

    我希望 TI 也在 Display.h 文件中的 display_printf 函数中使用了"vprintf"

    void Display_doPrintf (Display_Handle 句柄、uint8_t 行、uint8_t 列、const char * fmt、...)
     {
     if (NULL == handle)
     {
     DebugP_log0 ("尝试使用 NULL-Handle。");
     返回;
     }

     va_list va;
     va_start (va、fmT);

     句柄->fxnTablePtr->vprintfFxn (句柄、行、列、fmt、va);

     va_end (va);
     }

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

    您好!

    我懂了。 为了说明这一点、您是尝试通过 UART 还是简单地通过调试 JTAG 连接进行打印? 这将帮助我们确定最佳途径。

    此致、

    1月

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

    大家好、Jan、

    我们仅使用 UART 我们 不使用"UART2" API 而是使用的"Display_printf"。 没有"vsnprintf"它不会挂起,但如果我们使用"vsnprintf"它正在挂起。

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

    您好!

    我懂了。 为了使用 UART 进行消息传输、我强烈建议使用 UART2驱动程序或 Display_printf 驱动程序。 BLE 工程默认使用 display_printf 驱动程序、但也可以使用 uart2驱动程序。 我建议参考我们在 SDK 中包含的 UART2示例。 如果您希望出于日志记录目的通过 JTAG 发送消息、日志驱动程序可能也会很有帮助。

    此致、

    1月