欢迎来到天天文库
浏览记录
ID:38266022
大小:39.39 KB
页数:24页
时间:2019-06-07
《zigbee组网程序解读》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Zigbee组网过程解读第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络//第一步:Z-Stack 由main()函数开始执行,main()函数共做了2件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统intmain(void) { .......//Initializetheoperatingsystemosal_init_system(); //第二步,操作系统初始化......osal_start_system();//初始化完系统任务事件后,正式开始执行操作系
2、统 ......} //第二步,进入osal_init_system()函数,执行操作系统初始化uint8osal_init_system(void) //初始化操作系统,其中最重要的是,初始化操作系统的任务{//InitializetheMemoryAllocationSystem osal_mem_init();//Initializethemessagequeue osal_qHead=NULL;//Initializethetimers osalTimerInit();//InitializethePowerManageme
3、ntSystem osal_pwrmgr_init();//Initializethesystemtasks.osalInitTasks(); //第三步,执行操作系统任务初始化函数//Setupefficientsearchforthefirstfreeblockofheap. osal_mem_kick(); return(SUCCESS);}//第三步,进入osalInitTasks()函数,执行操作系统任务初始化voidosalInitTasks(void) //第三步,初始化操作系统任务{ uint8taskID=0;
4、tasksEvents=(uint16*)osal_mem_alloc(sizeof(uint16)*tasksCnt); osal_memset(tasksEvents,0,(sizeof(uint16)*tasksCnt));//任务优先级由高向低依次排列,高优先级对应taskID的值反而小 macTaskInit(taskID++);//不需要用户考虑 nwk_init(taskID++); //不需要用户考虑 Hal_Init(taskID++); //硬件抽象层初始化,需要我们考虑#ifdefined(MT_TAS
5、K) MT_TaskInit(taskID++);#endif APS_Init(taskID++); //不需要用户考虑#ifdefined(ZIGBEE_FRAGMENTATION) APSF_Init(taskID++);#endifZDApp_Init(taskID++); //第四步,ZDApp层,初始化,执行ZDApp_init函数后,如果是协调器将建立网络,如果是终端设备将加入网络。#ifdefined(ZIGBEE_FREQ_AGILITY)
6、
7、defined(ZIGBEE_PANID_CONFLI
8、CT) ZDNwkMgr_Init(taskID++);#endif SerialApp_Init(taskID); //应用层SerialApp层初始化,需要用户考虑 在此处设置了一个按键触发事件, //当有按键按下的时候,产生一个系统消息} //第四步,进入ZDApp_init()函数,执行ZDApp层初始化//ThefirststepvoidZDApp_Init(uint8task_id) /
9、/Thefirststep,ZDApp层初始化。{//SavethetaskID ZDAppTaskID=task_id;//InitializetheZDOglobaldeviceshortaddressstorage ZDAppNwkAddr.addrMode=Addr16Bit; ZDAppNwkAddr.addr.shortAddr=INVALID_NODE_ADDR; (void)NLME_GetExtAddr(); //LoadthesaveExtAddrpointer.//Checkformanual"HoldAutoStar
10、t" ZDAppCheckForHoldKey();//InitializeZDOitemsandsetupthedevice-typeofdevicetocreate. ZDO
此文档下载收益归作者所有