调用蓝牙命令会冻结协处理器



我正在尝试影响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);行。

我怀疑进程间通信有问题,但不能想象在哪里看。建议吗?

听起来pCmdBuffer中的值没有对齐,处理器需要严格对齐。

最新更新