蓝牙发送数据-内存申请释放问题

使用蓝牙发送数据时,使用 tmos_msg_allocate(5);申请了内存

pMsg = tmos_msg_allocate(5);// 申请内存
if (pMsg != NULL)
{
    pMsg[0] = 0x01;
    pMsg[1] = 0x02;
    pMsg[2] = 0x03;
    pMsg[3] = 0x04;
    pMsg[4] = 0x05;
    tmos_msg_send(task_id, pMsg);
}

最终是不是回到回调函数

uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)
{
    if (events & SYS_EVENT_MSG) 
    {
        uint8_t *pMsg;
        if ((pMsg = tmos_msg_receive(Peripheral_TaskID)) != NULL) 
        {
            Peripheral_ProcessTMOSMsg((tmos_event_hdr_t *)pMsg); // 处理消息
            tmos_msg_deallocate(pMsg);                           // 释放内存
        }
        return (events ^ SYS_EVENT_MSG);
    }
}

通过tmos_msg_deallocate(pMsg);释放内存空间?

可以使用tmos_msg_allocate和tmos_msg_deallocate进行内存的申请和释放,这是专门针对蓝牙协议栈使用的。

如果是用到蓝牙的收发功能,可以使用GATT_bm_alloc和GATT_bm_free进行内存的申请和释放。


只有登录才能回复,可以选择微信账号登录