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

请问Zstack中事件可以嵌套么?

1、系统事件SYS_EVENT_MSG中检测接收到无线数据后,调用函数MyApp_MessageMSGCB()处理

2、MyApp_MessageMSGCB()中,产生一个事件MYAPP_START_ADC_EVT去处理对应的数据

3、

if(events & MYAPP_START_ADC_EVT)
  {
    MyApp_AF_ADC_Value();
    return (events ^ MYAPP_START_ADC_EVT);
  }

4、MyApp_AF_ADC_Value()函数中进行ADC的采集,并AF发送给其他设备。

这样会导致此设备频繁的进入下面的代码,测试时串口频繁的打印“1_2”

 case BDB_COMMISSIONING_NWK_STEERING: //加入网络成功
      if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS)
      {
         HalUARTWrite(0,"1_2\r\n",strlen("1_2\r\n")); //回显错误类型。
      }
      else
      {
        osal_start_timerEx(zclGenericApp_TaskID, GENERICAPP_END_DEVICE_REJOIN_EVT, GENERICAPP_END_DEVICE_REJOIN_DELAY);
      }
    break;

现象1:其他不变,如果4处MyApp_AF_ADC_Value()函数不进行AF发送,就正常。只要 进行AF发送,就会导致上面的现象,频繁打印“1_2”,请问这是怎么回事?

现象2:其他不变,如果2处不是产生事件MYAPP_START_ADC_EVT,而是直接调用MyApp_AF_ADC_Value(),此时进行AF发送也正常。如果2处是产生事件MYAPP_START_ADC_EVT,仍会出现串口频繁打印“1_2”。

请问该怎么处理这个现象?

Viki Shi:

请问所使用的STACK版本及芯片分别是什么?

user4711142:

回复 Viki Shi:

zstack 3.0.2+CC2530.
已经解决了,MyApp_AF_ADC_Value()进行ADC采集+AF发送就会产生bug。但是将AF发送的代码,单独用一个事件执行,就不会出现上述bug。我也不知道是为什么

赞(0)
未经允许不得转载:TI中文支持网 » 请问Zstack中事件可以嵌套么?
分享到: 更多 (0)