版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此起到事半功倍的效果,经过多名初学者学习所积累总结出的经验,希望对您有所帮定义了NWK(网络层)、APS(应用程序支持子层)、APL(应用层)技术规范。ZigBee协议栈是协议的实现,可以理解为代码,函数库,供上层应用调用,协议较的层与一个功能模块给你调用。你需要关心的就是你的应用逻辑,数据从哪里到哪里,怎么,afStatus_tAF_DataRequest(afAddrType_tendPointDesc_tuint16uint16uint8uint8uint8uint8radiusuint16len,解压..\相关资料与软件\Zigbee开发软件\ZStack-CC2530-2.3.0-1.4.0协议栈安装文hal,zcl等库的代码 SampleApp.eww,从软件开发专业角度讲建议大家工程到非中文 MAC:MACMAC配置文件及其MACLIB Profile:Applicationframework应 ,包含AF层处理函数文 及Z-Stack相关配置信息。ZMac:MAC层 Output:输出文件,由IARIDE自动生 鸟,具体使用请参考相关资料与软件\Zigbee参考资料\SourceInsight使用.pdf。下进行注释,方便习惯看源码的学习。我建议大家先的文章,再阅读一次源码加自己添加的应用任务程序在Zstack中的调用过程:main()--->osal_init_system()--->osalInitTasks()--->intmain(void{osal_int_disable(INTS_ALL);//关闭所有中断 //检查电压是否正常InitBoard(OB_COLD); //初始化I/O,LED、Timer等 //初始化各硬件模块osal_nv_init(NULL); //初始化Flash器 //初始化MAC层 #ifndef//SincetheAFisn'tatask,callit'sinitializationroutineosal_int_enable(InitBoard(OB_READY#ifdef #ifdef/*IfWDTisused,thisisagoodcetoenableit.*/WatchDogEnable(WDTIMX);osal_start_system();NoReturnfromherereturn0;//Shouldn'tget}//操作系统。进去后可不会回来了。在这里,我们重点了解2个函数:初始化操作系统运行操作系统单击右键——gotodefinitionof…,便可以进入函数。发现里面有6个初始化函数,这里我们只关心osalInitTasks();任务初始化函数,继续由该函数进入。voidosalInitTasks(void{uint8taskID=tasksEvents=(uint16*)osal_mem_alloc(sizeof(uint16) osal_memset(tasksEvents,0,(sizeof(uint16) //任务优先级由高向低依次排列,高优先级对应taskID的值反而小makInit(taskID++);//makInit(0),用户不需考虑nwk_init(taskID++); Hal_Init(taskID++); //Hal_Init(2),用户需考虑#ifdefined(MT_TASK) MT_TaskInit(taskID++);APS_Init(taskID++ #ifdefined(ZIGBEE_FRAGMENTATION)APSF_Init(taskID++);ZDApp_Init(taskID++ #ifdefined(ZIGBEE_FREQ_AGILITY)||defined(ZIGBEE_PANID_)ZDNwkMgr_Init(taskID++);SampleApp_Init(taskID);SampleApp_Init_Init(5),用户需考虑。}们应用协议栈例程的必要函数,用户通常在这里初始化自己的东西。至此,voidosal_start_system(void{#if!defined(ZBIT)&&!defined(UBIT)for(;;)//ForeverLoop{uint8idx= Hal_ProcessPoll();TIMERdoif(tasksEvents[idx])//Taskishighestprioritythatis{ }}while(++idx if(idx {uint16events;events=tasksEvents[idx]; tasksEvents[idx]=0; HAL_EXIT_CRITICAL_SECTION(intState);//退出临界区eventstasksArr[idx])(idx,events tasksEvents[idx]|=events;//保存未处理的Addbackunprocessedeventstothecurrenttask. }#ifdefined(POWER_SAVINGelse//Completepassthroughalltaskeventswithno{osal_pwrmgr_powerconserve();//Puttheprocessor/systeminto}}}我们看一下events=tasksEvents[idx];进入tasksEvents[idx]数组定义,发现恰好是是初始化与调用的关系。taskID把任务联系起来了。voidSampleApp_Init(uint8task_id){恢复其网络状态,而不需要重新建立或者加入网络了.这里需要设置NV_RESTORE宏定义。#ifdefined(BUILD_ALL_DEVICES)if(readCoordinatorJumper())zgDeviceLogicalType=ZG_DEVICETYPE_COORDINATOR;zgDeviceLogicalType=ZG_DEVICETYPE_ROUTER;#endif//BUILD_ALL_DEVICES#ifdefined(HOLD_AUTO_START)SampleApp_Periodic_DstAddr.addrMode=(afAddrMode_t)AddrBroadcast;//广播SampleApp_Periodic_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;//指定端点号=Setupfortheflashcommand'sdestinationaddressGroup1SampleApp_Flash_DstAddr.addrMode=(afAddrMode_t)afAddrGroup;//组寻址SampleApp_Flash_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;//指定端点号SampleApp_Flash_DstAddr.addr.shortAddr=SAMPLEAPP_FLASH_GROUP;//组号0x0001SampleApp_epDesc.endPoint=SampleApp_epDesc.task_id=&SampleApp_TaskID;//SampleApp描述符的任务ID //SampleApp简单描述符(SimpleDescriptionFormat_t*)&SampleApp_SimpleDesc;SampleApp_epDesc.latencyReq=noLatencyReqs;//延时策略AFendpointdescriptionAF,AFEPafRegister(&SampleApp_epDescRegisterForKeys(SampleApp_TaskIDBydefault,alldevicesstartoutinGroup1SampleApp_Group.ID=0x0001;//组号osal_memcpy(SampleApp_G,"Group1",7aps_AddGroup(SAMPLEAPP_ENDPOINT,&SampleApp_GroupAPS#ifdefined(LCD_SUPPORTEDHalLcdWriteString("SampleApp",HAL_LCD_LINE_1LCD,显示提示信息}uint16SampleApp_ProcessEvent(uint8task_id,uint16events{ingMSGPacket_t(void)task_id;//Intentionallyunreferencedifevents&SYS_EVENT_MSG{MSGpkt=( ingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID);while(MSGpkt){switch(MSGpkt->hdr.event{ReceivedwhenakeyispressedcaseKEY_CHANGE://按键SampleApp_HandleKeys(((keyChange_t*)MSGpkt)->state,*)MSGpkt)->keys//Receivedwhenamessagesisreceived(OTA)forthis ING_MSG_CMD://接收数据,调用函数AF_DataRequest()接收据SampleApp_MessageMSGCB(MSGpkt 理//ReceivedwheneverthedevicechangesstateinthecaseZDO_STATE_CHANGE:ZDO_STATE_CHANGESampleApp_NwkState=(devStates_t)(MSGpkt-//if((SampleApp_NwkState==DEV_ZB_COORD)if((SampleApp_NwkState==DEV_ROUTER)||(SampleApp_NwkStateDEV_END_DEVICE){osal_start_timerEx(}{//Deviceisnolongerinthe}}//Releasethememory//处理完了,释放消息占用的内osal_msg_deallocate((uint8*)MSGpktMSGpkt= ingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID}returnunprocessedevents//返回未处理的return(events^SYS_EVENT_MSG);}//Sendamessageout-Thiseventisgeneratedbya//(setupinif(events&SAMPLEAPP_SEND_PERIODIC_MSG_EVT{//处理周期 //Setuptosendmessageagaininnormalperiod(+alittlejitter)(SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT+(osal_rand()&0x00FF)));//returnunprocessedeventsreturn(events^}//Discardunknowneventsreturn0;}void ingMSGPacket_t*pkt{bytebuf[3];switchpkt->clusterId{caseSAMPLEAPP_PERIODIC_CLUSTERID://收到广播数据osal_memset(buf,0,3);osal_memcpy(buf,pkt->cmd.Data,2);//数据到缓冲区if(buf[0]=='D'&& //判断收到的数据是否为{HalLedBlink(HAL_LED_1,0,50,500);Led1500ms
}{}
HalLedSet(HAL_LED_1,caseSAMPLEAPP_FLASH_CLUSTERID:flashTime=BUILD_UINT16(pkt->cmd.Data[1],pkt->cmd.Data[2]);HalLedBlink(HAL_LED_4,4,50,(flashTime/4));}}voidSampleApp_SendPeriodicMessage(void){byteif(AF_DataRequest(&SampleApp_Periodic_DstAddr,AF_DEFAULT_RADIUS)==afStatus_SUCCESS{}{HalLedSet(HAL_LED_1,//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 货币资金安全承诺书(4篇)
- 2026年岗位竞聘上岗实施方案设计
- 2026年历史文化街区保护规划编制
- 机械制图与CAD课件-学习情境4《组合体投影》
- 南京大型仓库租赁协议书
- 快熔的选择标准模板
- 心理健康 五年级下 第19课 《今天我当家》
- 养护工区施工方案(3篇)
- 外场抽奖活动方案策划(3篇)
- 锅炉内施工方案(3篇)
- 权利与义务相统一 课件- 2025-2026学年统编版道德与法治八年级下册
- 2026年温州永嘉县国有企业面向社会公开招聘工作人员12人笔试模拟试题及答案解析
- 2026年江西信息应用职业技术学院单招职业适应性测试题库有答案解析
- 2025年抚州职业技术学院单招职业技能考试试题及答案解析
- 高中语文三年级“起点与前行的姿态”材料作文思辨读写知识清单
- 美妆培训行业薪酬制度
- 2026年人工智能考试智能机器人技术应用专项训练含答案
- 市监局规范外卖管理制度
- 2025版《csco前列腺癌诊疗指南》全文
- 2025年度黑龙江人才周佳木斯市急需紧缺专业技术人才引进227人笔试参考试题(中国农业大学专场)附答案解析
- 2026年安徽邮电职业技术学院单招职业技能测试必刷测试卷附答案
评论
0/150
提交评论