欢迎来到天天文库
浏览记录
ID:12749755
大小:92.00 KB
页数:8页
时间:2018-07-18
《自动启动模式建立网络》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、建立zigbee网络本工程是利用IAREmbeddedWorkbenchIDE平台在Z_Stack协议栈所给实验工程例子SimpleApp基础上做的。准备工作:为了能够正确的建立zigbee网络必须确保:有正确的设备作为coordinator;终端设备被正确配置。这就需要对设备进行合理的配置,配置位置如下图所示。1.在f8wConfig.cfg文件中对设备“网络参数”进行合理的配置,本工程采用了默认的配置方式;-DDEFAULT_CHANLIST=0x00000800//11-0x0B-DZDAPP_CONFIG_PAN_ID=0xFFFF//
2、PANID配置2.f8wCoord.cfg;f8wEndev.cfg;f8wRouter.cfg文件中对设备的“细节参数”进行设置,根据设备在网络中的角色不同配置参数可以不同;3.配置ZCD_NV_LOGICAL_TYPE。网络建立过程:Z_Stack中程序是都是首先从Zmain.c文件中的主函数开始的,当控制节点上电以后经一系列的初始化激活osal_init_system(void)函数,进入操作系统初始化,通过osalInitTasks()初始化系统事件函数进入ZDApp_Init(uint8task_id)应用层初始化函数,最终在sapi
3、层设置进入事件。由事件处理函数对事件依依处理。建立网路有两种方式:自动启动模式和非自动启动模式。在ZDApp.c文件中,有如下定义:#ifdefined(HOLD_AUTO_START)devStates_tdevState=DEV_HOLD;//初始化-不会自动启动#elsedevStates_tdevState=DEV_INIT;//初始化-没有连接到任何东西#endif非自动启动模式即需要定义HOLD_AUTO_START编译选项,采用手动按钮来启动的方式;自动启动模式则是没用定义编辑选项所进行的程序启动模式。本文采用的是自动启动模式,下
4、面本系统的网络建立进行简介。协调器建立网络基于Zigbee网络的项目程序都是从Zmain.c主函数开始,在网络建立的过程中主要是经一定的硬件初始化后调用osal.c文件中的//Initializetheoperatingsystem(初始化操作系统)osal_init_system();进入操作系统初始化//Initializethesystemtasks.初始化系统事件OSAL_Yeelink.c文件中osalInitTasks();voidZDApp_Init(uint8task_id)应用层初始化函数(在ZDAPP.c文件中)设备启动有两
5、种方式:自动启动和非自动启动(用户进行了HOLD_AUTO_START宏定义或者按下了SW_1键使得devState等于DEV_HOLD)。进行到这里,系统将根据用户配置自动进行启动模式判断。不管哪种启动方式,都在以下代码中得到体现:voidZDApp_Init(bytetask_id){uint8capabilities;//SavethetaskIDZDAppTaskID=task_id;//InitializetheZDOglobaldeviceshortaddressstorageZDAppNwkAddr.addrMode=Addr16
6、Bit;ZDAppNwkAddr.addr.shortAddr=INVALID_NODE_ADDR;(void)NLME_GetExtAddr();//LoadthesaveExtAddrpointer.加载IEEE地址//Checkformanual"HoldAutoStart"//打开电源时,检测到有手工设置SW_1则会设置devState=DEV_HOLD,从而不进行网络初始化ZDAppCheckForHoldKey();//InitializeZDOitemsandsetupthedevice-typeofdevicetocreate.
7、ZDO_Init();//初始化ZDO条目,并设置设备的启动方式是协调器,还是别的afRegister((endPointDesc_t*)&ZDApp_epDesc);#ifdefined(ZDO_USERDESC_RESPONSE)ZDApp_InitUserDesc();#endifNLME_GetRequest(nwkCapabilityInfo,0,&capabilities);NLME_SetBroadcastFilter(capabilities);if(devState!=DEV_HOLD){ZDOInitDevice(0);//
8、如本工程没有定义HOLD_AUTO_START则成功执行设备初始化函数}else{//如进行了宏定义,则等待延时或外部事件启动网络,并且LED4灯闪烁
此文档下载收益归作者所有