调用蓝牙指令致协处理器卡死(NUCLEO-WB16CC BLE开发)
STM32WB BLE广播载荷更新接口调用挂起问题
问题背景
- 开发目标:修改BLE广播信标内的载荷数据
- 硬件平台:基于双核STM32WB15CC的NUCLEO WB16CC开发板
故障现象
调用aci_gap_update_adv_data(sizeof(manuf_data), manuf_data)接口时,程序会在自行添加的两处// LED注释对应的代码行之间挂起,相关代码段如下:
static void SendCmd(uint16_t opcode, uint8_t plen, void *param) { // vorac HAL_GPIO_WritePin(0x48000400, ((uint16_t)0x0020), 0); // LED1 pCmdBuffer->cmdserial.cmd.cmdcode = opcode; HAL_GPIO_WritePin(0x48000400, ((uint16_t)0x0001), 0); // LED2 pCmdBuffer->cmdserial.cmd.plen = plen; memcpy( pCmdBuffer->cmdserial.cmd.payload, param, plen ); hciContext.io.Send(0,0); return; }
已确认线索
pCmdBuffer指针非空,其指向的内存原始定义为PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static TL_CmdPacket_t BleCmdBuffer;- 若将该缓冲区修改为普通全局变量,程序挂起位置会下移到
hciContext.io.Send(0,0);代码行 - 初步怀疑故障与双核核间通信机制有关,暂未定位问题根源,寻求对应排查建议
内容的提问来源于stack exchange,提问作者Vorac
相关产品推荐
相关产品推荐

