Hi,
改用改用8.40版本后,CC2340R5接收200多条手表通知后,就再也接收不到手表的心率通知,怀疑是内存泄露触发了BLE STACK异常。在case ATT_HANDLE_VALUE_NOTI:语句中增加GATT_bm_free((gattMsg_t*)pMsgData, ATT_HANDLE_VALUE_NOTI);后,有时CC2340接收200多条手表心率通知后就再也接收不到了,有时CC2340接收手表1000多条的心率通知后仍可继续接收。可以推测接收异常跟内存泄露有关。在BLEAppUtil_Task中,调用BLEAppUtil_processStackEvents(stackMsg->pMessage, stackMsg->eventAndHandlerType);后,有做内存释放 BLEAppUtil_free(stackMsg);,照理不用再在case ATT_HANDLE_VALUE_NOTI:语句中增加内存释放GATT_bm_free((gattMsg_t*)pMsgData, ATT_HANDLE_VALUE_NOTI);,比较迷惑。BLE Stack的内存处理有文档介绍吗?有的话,请提供下。
我为延误表示歉意。您能否澄清一下,自您上次回复以来,该问题的最新状态是否发生了变化?
你说的内存释放是指节省内存吗?如果是这样,那么在项目属性的优化部分中启用链路时间优化(LTO)应该可以节省一些额外的内存。我们在GitHub上确实有一个GATT客户端示例,这可能会有所帮助: