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.

[参考译文] CC2340R5:在写入完成之前、UART buf 擦除了一些字节

Guru**** 2589265 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1384829/cc2340r5-uart-buf-wiped-some-bytes-before-write-finish

器件型号:CC2340R5

工具与软件:

大家好!

我需要从 UART 读取数据、然后添加标头、发回新数据。 但数据 会在 UART 写入完成前被擦除。

我的代码就像波纹

程序运行方式  
读取:1234...xxx
添加标头后:ABC1234...xxx
预期接收:ABC1234...xxx
实际上接收:ABC1234

它丢失了几个字节。 如果我逐步运行程序、就不会发生这种情况。

有什么设置可以解决这个问题吗? 或者必须添加互斥锁?

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

    您好!

    只要正确管理数据缓冲区、该功能就应该有效。

    如果它只在逐步执行中有效、那么也许还有一些其它线程或中断正在修改那个缓冲区。

    一个互斥体可能很有用--你能试一下吗、告诉我们它是否起作用?

    谢谢!
    Toby

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

    尊敬的 Toby:

    我检查了代码、 UART 写入有一个 信标控制、这不是添加互斥锁的好方法。

    我仍在检查清空此写入缓冲区的原因。  

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

    尊敬的 Toby:

    默认的 UART 写入模式是 UART2_Mode_callback、在本例中、我将其更改为 UART2_Mode_blocking、这样缓冲区在完成之前就不会清空。