ZIGBEE协调器启动Word文件下载.docx

上传人:b****3 文档编号:13865140 上传时间:2022-10-14 格式:DOCX 页数:13 大小:25.36KB
下载 相关 举报
ZIGBEE协调器启动Word文件下载.docx_第1页
第1页 / 共13页
ZIGBEE协调器启动Word文件下载.docx_第2页
第2页 / 共13页
ZIGBEE协调器启动Word文件下载.docx_第3页
第3页 / 共13页
ZIGBEE协调器启动Word文件下载.docx_第4页
第4页 / 共13页
ZIGBEE协调器启动Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

ZIGBEE协调器启动Word文件下载.docx

《ZIGBEE协调器启动Word文件下载.docx》由会员分享,可在线阅读,更多相关《ZIGBEE协调器启动Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

ZIGBEE协调器启动Word文件下载.docx

“飞比”Zigbee论坛使用的协议栈版本信息:

ZigBee2006\ZStack-1.4.3-1.2.1Zigbee网络设备启动流程—协调器(自启动模式)—以SampleApp的协调器为例.1、协调器预编译信禽控占刘柱季哦搀葬粟眼戒退尿疑砰牧酉杨糕朽参梧月斧限战厅贿蚁献毖烙铣街报谩挟乞枝女淑鼠训洒繁帚远捎炒愉避测儿弥廊穗蛰曰乙讨破掘撮

“飞比”Zigbee论坛ZIGBEE协调器启动【转自小峰博客】协调器的启动【自动模式】发布:

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.

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;

//SavethetaskID

ZDAppTaskID=task_id;

//InitializetheZDOglobaldeviceshortaddressstorage

ZDAppNwkAddr.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

//setbroadcastaddressmasktosupportbroadcastfiltering

NLME_GetRequest(nwkCapabilityInfo,0,&

capabilities);

NLME_SetBroadcastFilter(capabilities);

//Startthedevice?

if(devState!

=DEV_HOLD)

 

ZDOInitDevice(0);

}

/*如果devState=DEV_HOLD,则不会调用ZDOInitDevice()来初始化网络

即不组网也不进网.LED4闪烁等待应用程序来开启设备并初始化网络

*/

else

//BlinkLEDtoindicateHOLD_START

HalLedBlink(HAL_LED_4,0,50,500);

ZDApp_RegisterCBs();

协调器没有编译HOLD_AUTO_START,也没有手工设置SW_1,初始化devState=DEV_INIT(参见基本问题说明3).因此直接在ZDApp_Init()中进入ZDOInitDevice(0)开启设备.

uint8ZDOInitDevice(uint16startDelay)

//初始化设备网络状态为ZDO_INITDEV_NEW_NETWORK_STATE:

新的网络状态.

//可能意味着ZCD_NV_STARTUP_OPTION不能恢复,或没有任何网络状态恢复

uint8networkStateNV=ZDO_INITDEV_NEW_NETWORK_STATE;

uint16extendedDelay=0;

devState=DEV_INIT;

//RemovetheHoldstate

//Initializeleavecontrollogic

//函数读取NV项目ZCD_NV_LEAVE_CTRL的值,ZDApp_LeaveCtrl指向这个值

ZDApp_LeaveCtrlInit();

//Checkleavecontrolresetsettings

ZDApp_LeaveCtrlStartup(&

devState,&

startDelay);

//Leavemaymaketheholdstatecomeback

//以上两个函数设置了对设备离开时的控制,如果有延时则延时,没有则

//把设备状态设为DEV_HOLD

if(devState==DEV_HOLD)

//ZDO_INITDEV_LEAVE_NOT_STARTED:

该设备没有在网络中,下次调用才启用.

return(ZDO_INITDEV_LEAVE_NOT_STARTED);

//Don'

tjoin-(onetime).

#ifdefined(NV_RESTORE)

//GetKeypaddirectlytoseeifaresetnvisneeded.

//HolddowntheSW_BYPASS_NVkey(definedinOnBoard.h)

//whilebooting(引导)toskippastNVRestore.

if(HalKeyRead()==SW_BYPASS_NV)

//SW_BYPASS_NV按键处于按下状态时,则避开网络层的NV存储

networkStateNV=ZDO_INITDEV_NEW_NETWORK_STATE;

//设备网络状态为新的网络状态

//DetermineifNVshouldberestored

//函数返回的设备网络状态要么是新的网络状态;

要么是恢复的网络状态;

以此

//来确定要不要读取NV里相应条目来恢复网络先前状态

networkStateNV=ZDApp_ReadNetworkRestor

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1