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。我也不知道是为什么