SwaveYu 发表于 2021-5-19 20:28

CH579M调用更新广播内容函数后BLE就死机的问题

static void performPeriodicTask( void )
{
    /* 每隔一秒更新广播数据 */
    GAP_UpdateAdvertisingData( Peripheral_TaskID, TRUE, strlen(advertData), advertData );
}
performPeriodicTask函数设置为每隔1s调用一次,但只要advertData中的数据被改了,蓝牙就再也无法正常广播信号(蓝牙调试助手无法检测到蓝牙信号),如果使能了HAL_SLEEP=TRUE,程序则进入睡眠模式后再也无法被唤醒。performPeriodicTask函数设置如下就会出现上述问题。
static void performPeriodicTask( void )
{
    advertData = 0xaa;
    GAP_UpdateAdvertisingData( Peripheral_TaskID, TRUE, strlen(advertData), advertData );
}

SwaveYu 发表于 2021-5-20 19:48

这是工程,第一次连接上蓝牙后,从串口确实看到每隔一秒都会触发更新广播内容任务,但当蓝牙调试助手断开蓝牙连接想看看广播内容是否改变时,却直接搜不到蓝牙信号了

WCHTech2 发表于 2021-5-21 15:50

参考该方法
static void performPeriodicTask( void )
{
   PRINT("performPeriodicTask\r\n");
      advertData = advertData++;
      PRINT("UpdateAdvertisingData\r\n");
      GAP_UpdateAdvertisingData( Peripheral_TaskID, TRUE, sizeof(advertData), advertData );
}
工程见附件

页: [1]
查看完整版本: CH579M调用更新广播内容函数后BLE就死机的问题