微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 2530中程序跑飞

2530中程序跑飞

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

UINT16 SerialApp_ProcessEvent( uint8 task_id, UINT16 events )
{
  (void)task_id;  // Intentionally unreferenced parameter
    HalUARTWrite ( 0, "MSG3", 4);
   if ( events & SERIALAPP_TEST_EVT )      //上电偏移事件
  {
    SerialApp_TEST();                             
    return ( events ^ SERIALAPP_TEST_EVT );
  }
 
 
  if ( events & SERIALAPP_TESTRESP_EVT )   //上电偏移事件,响应。
  {
    SerialApp_TESTRSP();              ////向节点 1 发送 成功接受的 response                
    return ( events ^ SERIALAPP_TESTRESP_EVT );
  }
 
 
  if ( events & SERIALAPP_RESP_EVT )
  {
    SerialApp_Resp();
    return ( events ^ SERIALAPP_RESP_EVT );
  }
 
  if ( events & SYS_EVENT_MSG )
  {
    afIncomingMSGPacket_t *MSGpkt;
  // HalUARTWrite ( 0, "MSG2", 4);
    while ( (MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SerialApp_TaskID )) )
    {//HalUARTWrite ( 0, "MSG1", 4);
      switch ( MSGpkt->hdr.event )
      {
        HalUARTWrite ( 0, "PKT", 3);
       
      case AF_INCOMING_MSG_CMD:
         HalUARTWrite ( 0, "MSG", 3);  
        SerialApp_ProcessMSGCmd( MSGpkt );
        break;
       
      case ZDO_STATE_CHANGE:
        SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
        if ( (SampleApp_NwkState == DEV_ZB_COORD)
            || (SampleApp_NwkState == DEV_ROUTER)
            || (SampleApp_NwkState == DEV_END_DEVICE) )
        {
            // Start sending the periodic message in a regular interval.
            HalLedSet(HAL_LED_1, HAL_LED_MODE_ON);
           
            if(SampleApp_NwkState != DEV_ZB_COORD)
              SerialApp_DeviceConnect();             
        }
        else
        {
          // Device is no longer in the network
        }
        break;

      default:
        break;
      }

      osal_msg_deallocate( (uint8 *)MSGpkt );
    }

    return ( events ^ SYS_EVENT_MSG );
  }

  if ( events & SERIALAPP_SEND_EVT )
  {
    SerialApp_Send();
    return ( events ^ SERIALAPP_SEND_EVT );
  }

 /* if ( events & SERIALAPP_RESP_EVT )
  {
    SerialApp_Resp();
    return ( events ^ SERIALAPP_RESP_EVT );
  }*/

  return ( 0 );  // Discard unknown events.
}

整个流程中最后一步的时候,是要进入 case AF_INCOMING_MSG_CMD:
                                                                 HalUARTWrite ( 0, "MSG", 3);  
                                                               SerialApp_ProcessMSGCmd( MSGpkt );
                                                              break;

在进入 SerialApp_ProcessMSGCmd( MSGpkt ); 执行完消息蔟,整个流程就完了。但是程序就是进入不了switch ( MSGpkt->hdr.event )。

 我想问一下是什么原因。在前面的过程都能进入,就是最后返回消息不行了。

MSGpkt->hdr.event的值为FD

为什么说程序跑飞了?其他操作也没反应了吗?

没有收到数据是不会进入的AF_INCOMING_MSG_CMD的

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

网站地图

Top