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.

[参考译文] RTOS/CC2650:UART_write()在写入字符数组时停止

Guru**** 2582405 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/594615/rtos-cc2650-uart_write-stalling-when-writing-a-character-array

器件型号:CC2650

工具/软件:TI-RTOS

您好!

我正在使用串行端口将数据从 python 发送到 CC2650。 串行端口正在工作、我能够从 python 传输数据、并使用 CC2650内的 UART_READ()对其进行读取。 我遇到的问题是 UART_write()

1.对 UART_write()的所有调用均来自任务函数--> UART 处于阻塞模式

uart_write()在大小为4个字符的数组上工作,调用 uart_write (handle、char_arr、sizeof (char_arr)-1)// sizeof (char_arr)-1以防止发送退出字符'\0'

无法完全正常工作的调用 UART_WRITE (handle、char_size_64、strlen (char_size_64))。 现在、在本示例中、sizeof char_size_64是64个字符(因此是64字节)。 但在退出字符'\0'之前只有14个使用的字符、因此调用 strlen (char_size_64)会产生14个字符。 上述调用可重写为 UART_WRITE (handle、char_size_64、14)。 现在、python 正在接收这14个字符、但 CC2650在调用期间停止、永远不会访问调用之后的代码行。 我不知道如何处理此问题。 我可能会想到的一点是、发送大小为64的阵列时可能会出现问题、但仅告知 UART 写入14个字节... 或者堆栈大小不够大... 任务堆栈大小设置为512 MAU、我很确定我没有超出该值。

您可以分享的任何意见/想法都将有所帮助;这是一个越来越令人沮丧的问题。 感谢你的帮助

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

    您好、Anthony、

    我有几个问题:

    • 您使用的是哪种 IDE?
    • 您是否从多个任务调用 UART_Write?
    • 您能否向我们展示一些代码、以便我们了解问题发生在哪里?
    • 您是否尝试手动强制14作为写入长度?
    • 您是否尝试单步执行代码以检查 strlen 是否确实返回14?
    • 您是否已检查 ROV 以查看任务的停滞位置? ROV 可在 CCS 的 Tools 菜单或 IAR 的 TI-RTOS 菜单下使用。
      您可以检查任务和 BIOS 部分以查看是否有任何错误。

    此致、

    米歇尔

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

    固定的! 根据您的建议使用 ROV、表明 stackPeak 大于我的 STACKSIZE、因此增大 STACKSIZE 可解决问题! 谢谢