我正在尝试影响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中的值没有对齐,处理器需要严格对齐。