2530中程序跑飞
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的