ZigBee协议栈初始化网络启动流程Word文档下载推荐.docx
- 文档编号:15690600
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:12
- 大小:19.90KB
ZigBee协议栈初始化网络启动流程Word文档下载推荐.docx
《ZigBee协议栈初始化网络启动流程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ZigBee协议栈初始化网络启动流程Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
{
//Turnoffinterrupts
osal_int_disable(INTS_ALL);
//InitializationforboardrelatedstuffsuchasLEDs
HAL_BOARD_INIT();
//Makesuresupplyvoltageishighenoughtorun
zmain_vdd_check();
//InitializeboardI/O
InitBoard(OB_COLD);
//InitialzeHALdrivers
HalDriverInit();
//InitializeNVSystem
osal_nv_init(NULL);
//InitializetheMAC
ZMacInit();
//Determinetheextendedaddress
zmain_ext_addr();
//InitializebasicNVitems
zgInit();
#ifndefNONWK
//SincetheAFisn'
tatask,callit'
sinitializationroutine
afInit();
#endif
//Initializetheoperatingsystem
osal_init_system();
//Allowinterrupts
osal_int_enable(INTS_ALL);
//Finalboardinitialization
InitBoard(OB_READY);
//Displayinformationaboutthisdevice
zmain_dev_info();
/*DisplaythedeviceinfoontheLCD*/
#ifdefLCD_SUPPORTED
zmain_lcd_init();
#ifdefWDT_IN_PM1
/*IfWDTisused,thisisagoodplacetoenableit.*/
WatchDogEnable(WDTIMX);
osal_start_system();
//NoReturnfromhere
return0;
//Shouldn'
tgethere.
}//main()
1.2给任务添加ID
sapi.c中
voidosalInitTasks(void)//为各自进程添加ID用于任务的查找
uint8taskID=0;
tasksEvents=(uint16*)osal_mem_alloc(sizeof(uint16)*tasksCnt);
osal_memset(tasksEvents,0,(sizeof(uint16)*tasksCnt));
macTaskInit(taskID++);
nwk_init(taskID++);
Hal_Init(taskID++);
//硬件抽象层初始化
#ifdefined(MT_TASK)
MT_TaskInit(taskID++);
APS_Init(taskID++);
ZDApp_Init(taskID++);
//判断如果协调器节点建立网络、如果终端节点加入网络
SAPI_Init(taskID);
}
1.3初始化ZigBee协议栈网络
ZDApp.c
voidZDApp_Init(uint8task_id)
//SavethetaskID
ZDAppTaskID=task_id;
//InitializetheZDOglobaldeviceshortaddressstorage
ZDAppNwkAddr.addrMode=Addr16Bit;
ZDAppNwkAddr.addr.shortAddr=INVALID_NODE_ADDR;
(void)NLME_GetExtAddr();
//LoadthesaveExtAddrpointer.
//Checkformanual"
HoldAutoStart"
//检测到有手工设置HAL_KEY_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
//Startthedevice?
if(devState!
=DEV_HOLD)
ZDOInitDevice(0);
else
//BlinkLEDtoindicateHOLD_START
HalLedBlink(HAL_LED_4,0,50,500);
ZDApp_RegisterCBs();
}/*ZDApp_Init()*/
如果设置devState为DEV_HOLD,则不会执行ZDOInitDevice;
反之,系统会调用此函数是设备组网或者入网。
看下这个函数完成的功能是什么样子的。
ZDOInitDevice是设备在网络中启动。
它会读取NV中的ZCD_NV_STARTUP_OPTION选项决定是否恢复网络状态。
如果应用层强制进行新的join操作,它应该在调用这个函数之前设置ZCD_NV_STARTUP_OPTION中的ZCD_STARTOPT_DEFAULT_NETWORK_STATE位。
可以调用zgWrieStartupOptions()函数完成这些设置。
1.4初始化设备(启动网络和设置网络类型)
uint8ZDOInitDevice(uint16startDelay)
uint8networkStateNV=ZDO_INITDEV_NEW_NETWORK_STATE;
uint16extendedDelay=0;
if(devState==DEV_HOLD)
//InitializetheRAMitemstable,incaseanNVitemhasbeenupdated.
zgInitItems(FALSE);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ZigBee 协议 初始化 网络 启动 流程
![提示](https://static.bdocx.com/images/bang_tan.gif)