工具与软件:
CCS 版本:12.7.0.00007
SDK:8.10.01
项目: basic_ble_LP_EM_CC2340R5_freertos_ticlang
我将 CC2340R5测试为中心侧、以从外设侧接收通知数据。 我发现、当我接收到超过300个数据包(每个数据包有20个字节)时、调用 BLEAppUtil_invokeFunctionNoData ((InvokeFromBLEAppUtilContext_t) callbackStartScan);将导致 CC2340R5进入 faultISR、每次通知后、我将执行 GATT_FREE (&gattMsg->stack)、以确保内存已在下图中正常显示、并确保内存已释放
如果事务少于300个、则不会发生这种情况。
然后、我在调用 bLEAppUtil_invokeFunctionNoData ((InvokeFromBLEAppUtilContext_t) callbackStartScan)后使用断点执行单步执行;发现该断点似乎位于 bleapputil_task.c 的 void *BLE4/ISR (void faultarg)中、以执行 bLEAppUData_free (pptr)、然后输入了 Util_Task
是因为我的堆栈溢出? 我相信这不是简单地启动扫描造成的。 如果调用了其他蓝牙函数、也会发生这种情况。