微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 蓝牙定时事件处理

蓝牙定时事件处理

时间:10-02 整理:3721RD 点击:

大家好:

     我现在在使用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是每条都自增的,本来应该是第一条数据,第二条数据,第三条数据这样的,串口显示的是第三条,第二条,第一条这样的,这是怎么回事啊?大神们,帮帮忙吧

baozhu,

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

 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);
  }

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top