|  | 
 
 
| 
小弟用的是FreeScale的mc13213解决方案,研究的例程是基于BeeStack的Wireless uart Demo。在这个例程中,我想在Router加入网络后(没有绑定设备之前)手动向Coordinator发送数据(比如0x1234),并在Coordinator接收到数据后将此数据发送回PC。我对Router一端的ASL_Userinterface.c文件的void ASL_UpdateDevice函数里面的
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  case gZDOToAppMgmtZCRunning_c:
 case gZDOToAppMgmtZRRunning_c:
 case gZDOToAppMgmtZEDRunning_c:
 做了如下修改:
 case gZDOToAppMgmtZCRunning_c:
 case gZDOToAppMgmtZRRunning_c:
 case gZDOToAppMgmtZEDRunning_c:
 appState = mStateZDO_device_running_c;
 ASL_ConfigSetLed(LED1,gLedStopFlashing_c);
 ASL_ConfigSetLed(LED1,gLedOn_c);
 #if ((gCoordinatorCapability_d == 1) || (gRouterCapability_d == 1))
 ASL_ConfigSetLed(LED2,gLedOn_c);
 #endif
 LCD_WriteString(1,(uint8_t *)gsASL_Running);
 ASL_DisplayLine2OnLCD();
 PhyAssert(mPhyTxRxState==cBusy_Tx);
 MC1319xDrv_WriteSpiSync(TX_DATA, 0x1234);
 break;
 即添加了语句PhyAssert(mPhyTxRxState==cBusy_Tx);和MC1319xDrv_WriteSpiSync(TX_DATA, 0x1234);
 相应的我在Coordinator一端的程序中,在Mc1319xHandler.c文件中的INTERRUPT_KEYWORD void MC1319xInterrupt(void)函数里的if (retReg & cRX_DONE)条件中做了如下修改:
 if (retReg & cRX_DONE)
 {
 
 #if USE_INTERRUPT_RXEOF
 PhyPlmeSyncLossIndication();
 goto IsrExit;
 #else
 DummyIsr();
 #endif
 MC1319xDrv_ReadSpiSync(RX_DATA, datar);
 datapc = (*datar)&0x00ff;
 SCI2D= datapc;
 }
 其中datar定义是uint16_t *datar;datapc定义是unsigned char datapc;
 这样编译烧写运行发现,Router加入网络后Coordinator确实能向pc传回字符,但是传回的却是黑色上三角,然后Coordinator就停止响应(进入“死机”状态,只能复位),并且不管我在Router端发送什么数据,传回的都是黑色上三角符号,请问这是为什么?要是修改的话应当怎样改?请说的详细一点,谢谢!我是个ZigBee的初学者。
 | 
 |