预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

【转自小峰博客】协调器的启动【自动模式】 发布:2010-11-0820:17|作者:HYPERLINK"http://www.feibit.com/space.php?uid=847&op=bbs"tuzhuke|来源:“飞比”Zigbee论坛 使用的协议栈版本信息:ZigBee2006\ZStack-1.4.3-1.2.1Zigbee网络设备启动流程—协调器(自启动模式)—以SampleApp的协调器为例.1、协调器预编译信息通过project->options->c/c++compiler->extraOptions可以看到协调器所带的配置文件为:-f$PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wCoord.cfg-f$PROJ_DIR$\..\..\..\Tools\CC2430DB\f8wConfig.cfg即编译了ZDO_COORDINATOR和RTR_NWK.通过project->options->c/c++compiler->Preprocessor->Definedsymbols可以看到协调器预编译包含了:CC2430EB;ZTOOL_P1;MT_TASK;LCD_SUPPORTED=DEBUG;MANAGED_SCAN没有编译HOLD_AUTO_START和SOFT_START.2、具体流程main()->osal_init_system()->osalInitTasks()->ZDApp_Init()进入ZDApp_Init()函数:**************************************voidZDApp_Init(bytetask_id){uint8capabilities;//SavethetaskIDZDAppTaskID=task_id;//InitializetheZDOglobaldeviceshortaddressstorageZDAppNwkAddr.addrMode=Addr16Bit;ZDAppNwkAddr.addr.shortAddr=INVALID_NODE_ADDR;//0xFFFE(void)NLME_GetExtAddr();//LoadthesaveExtAddrpointer.//Checkformanual"HoldAutoStart"//检测到有手工设置SW_1则会设置devState=DEV_HOLD,从而避开网络初始化ZDAppCheckForHoldKey();//InitializeZDOitemsandsetupthedevice-typeofdevicetocreate.ZDO_Init();//通过判断预编译来开启一些函数功能//RegistertheendpointdescriptionwiththeAF//Thistaskdoesn'thaveaSimpledescription,butwestillneed//toregistertheendpoint.afRegister((endPointDesc_t*)&ZDApp_epDesc);#ifdefined(ZDO_USERDESC_RESPONSE)ZDApp_InitUserDesc();#endif//ZDO_USERDESC_RESPONSE//setbroadcastaddressmasktosupportbroadcastfilteringNLME_GetRequest(nwkCapabilityInfo,0,&capabilities);NLME_SetBroadcastFilter(capabilities);//Startthedevice?if(devState!=DEV_HOLD){ZDOInitDevice(0);}/*如果devState=DEV_HOLD,则不会调用ZDOInitDevice()来初始化网络即不组网也不进网.LED4闪烁等待应用程序来开启设备并初始化网络*/else{//BlinkLEDtoindicateHOLD_STARTHalLedBlink(HAL_LED_4,0,50,500);}ZDApp_RegisterCBs();}**************************************协调器没有编译HOLD_AUTO_START,也没有手工设置SW_1,初始化devState=DEV_INIT(参见基本问题说明3).因此直接在ZDApp_Init()中进入ZDOInitDevice(0)开启设备.**************************************uint8ZDOInitDevice(uint16startDelay){//初始化设备网络状态为ZDO