This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

osal_start_timerEx();函数不执行

我在串口接受回调中,串口接受指定字符后,

if(afStatus_SUCCESS==AF_DataRequest())

{

    osal_start_timerEx();//事件是5s后,重启

}

广播发送给节点,

在UINT16 SerialApp_ProcessEvent( uint8 task_id, UINT16 events )中事件没触发。

然后我随便把这个重启事件发在哪里都没法执行的。

当我注释掉一个事件(随便一个,算重启,一共三个事件)时候,就可以执行了。好奇怪。

难道是一个任务只能处理指定多个事件吗?但是之前也是三个事件都可以触发的。

协议版本zstack-cc2530-2.3.0-1.4.0.

  • 调用这个osal_start_timerEx的参数有设置多吧,task,eventID

  • osal_start_timerEx( SampleApp_TaskID,
    SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
    SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );没错,我是从以前三个事件都能执行的模版拷贝过来的,只是把里面的事件给改了就出问题了。

    我注释一个事件就能触发。例如:

    /*

    if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )
    {
    SerialApp_SendPeriodicMessage();
    osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT+(osal_rand() & 0x00FF) );
    return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
    }

    */

    我不注释事件,只是事件里面什么都不执行,还是不触发。

    if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )
    {
    //SerialApp_SendPeriodicMessage();
    //osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT+(osal_rand() & 0x00FF) );
    return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
    }

    好奇怪。我在研究研究。