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