TI中文支持网
TI专业的中文技术问题搜集分享网站

蓝牙定时事件处理

大家好:

     我现在在使用osal_start_timerEX()函数启动一个定时改变广播内容的事件,广播内容写在了一个二维数组中,具体代码

if(events & SBP_PERIODIC_CIRCLEEVT)
  {
    //停止广播
    GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
    //改变广播内容
    SimpleProfile_advertData();    //定时
    osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_CIRCLEEVT, TimeInterval );
   // return (events ^ SBP_PERIODIC_CIRCLEEVT);
  }

在SimpleProfile_advertData(); 函数中我做了以下操作:

    GAPRole_SetParameter( GAPROLE_ADVERT_DATA,30, UserAdvertData[g1_count%3] );
    GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &connAdv );
    NPI_WriteTransport(UserAdvertData[g1_count%3],sizeof( uint8 )*30);
    g1_count++;

按照逻辑应该是隔一段事件打印出一条数据,可是现在在串口打出的数据有时候是两条,有时候是一条,而且g1_count是每条都自增的,本来应该是第一条数据,第二条数据,第三条数据这样的,串口显示的是第三条,第二条,第一条这样的,这是怎么回事啊?大神们,帮帮忙吧

Yan:

baozhu,

你每次修改广播参数的时候有没有先把广播停止呢?

baozhu zhen:

回复 Yan:

 hi Yan,

我每次启动改变广播内容之前有关闭广播的,就是下面的第一句,难道它放的位置有问题?

if(events & SBP_PERIODIC_CIRCLEEVT)  {    //停止广播    GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );    //改变广播内容    SimpleProfile_advertData();     //定时    osal_start_timerEx( simpleBLEPeripheral_TaskID, SBP_PERIODIC_CIRCLEEVT, TimeInterval );   // return (events ^ SBP_PERIODIC_CIRCLEEVT);  }

赞(0)
未经允许不得转载:TI中文支持网 » 蓝牙定时事件处理
分享到: 更多 (0)