TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2340R5: 如何在uart的callback中正确操作BLEAppUtil

Part Number:CC2340R5

在Uart的readCallback中调用BLEAppUtil_advStop、BLEAppUtil_initAdvSet、BLEAppUtil_advStart会卡死。

我的需求是在Uart的readCallback中读取到某一个字符更新scanResData1内容。请问正确的操作流程应该是怎样的?

Yolande Wang:

Xuefeng said:在Uart的readCallback中调用BLEAppUtil_advStop、BLEAppUtil_initAdvSet、BLEAppUtil_advStart会卡死。

BLE操作通常需要在BLE协议栈线程中进行,将BLE操作与UART回调函数结合使用可能引发并发问题。

正确操作可以考虑如下流程:

1.在readCallback中读取UART数据,不要在此执行BLE操作

2.当UART收到某个字符后,触发事件(事先定义好),然后在主应用程序线程中处理BLE操作(如更新scanResData1)

3.不要在UART回调中直接调用BLEAppUtil函数,这样容易引起程序阻塞

,

Xuefeng:

定义了事件BLEAPPUTIL_ADV_MANUL_START,数据打包使用了BLEAppUtil_ScanEventData_t 结构。

在BLEAppUtil_Task中获取(BLEAppUtil_ScanEventData_t *)pMsgData)->pBuf->pAdvReport的pData和dataLen,但是获取到data和len都是错的。在UART回调中触发事件我应该如何正确发送数据?

,

Yolande Wang:

如果你在BLEAppUtil任务中获取到的data和len是不正确的,这可能是由于数据的复制或内存管理问题引起的。

Xuefeng said:在UART回调中触发事件我应该如何正确发送数据?

请确保以下几点:

1.在UART回调中,检查数据的起始地址和长度是否正确,以确保数据被正确传递给BLEAppUtil任务。

2.在BLEAppUtil任务中,使用合适的指针和长度,确保正确地提取数据。验证数据的指针是否指向正确的位置,并且数据长度正确。

3.在BLEAppUtil任务中,确保不会在处理数据时发生分配和释放内存的问题。如果您在这些方面都没有问题,还是无法正确获取正确的数据和长度,您可能需要通过使用调试工具或看日志的方式来帮助诊断问题。

赞(0)
未经允许不得转载:TI中文支持网 » CC2340R5: 如何在uart的callback中正确操作BLEAppUtil
分享到: 更多 (0)