版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、物联网专业2013年1月教师培训任务的建立OSAL是ZSTACK协议栈的核心,ZSTACK的任何一个子系统都作为一个任务,在开发过程中必须要创建OSAL任务来运行应用程序。每一个事件都是通过任务来实现的。如果要在ZSTACK协议栈中添加自己的事件,首先要添加自己的任务。添加任务是在应用层实现的。任务的建立Zstack协议栈里面运行的是OS系统,OS系统中事件的产生和处理是通过任务来实现的。端点是建立一个任务所必不可少的内容,OS系统中可以有多个任务,一个任务可以有多个端点,一个端点包含输入簇和输出簇,并且输入簇和输出簇必须相对应。任务的建立任务的建立初始化系统int main( void )
2、/ 关闭所有中断 osal_int_disable( INTS_ALL ); / 初始化相关硬件 HAL_BOARD_INIT(); / 电源检测 zmain_vdd_check(); / 初始化堆栈 zmain_ram_init(); /初始化i/o InitBoard( OB_COLD ); / 初始化硬件驱动 HalDriverInit(); /初始化NV osal_nv_init( NULL ); / Initialize basic NV items zgInit(); / 初始化MAC ZMacInit(); / 初始化地址 zmain_ext_addr();#ifndef NON
3、WK任务的建立 / AF初始化 afInit();#endif / 初始化操作系统 osal_init_system(); / 开中断 osal_int_enable( INTS_ALL ); / 复位 InitBoard( OB_READY ); /sd rest / 设备硬件初始化 zmain_dev_info(); /* LCD*/#ifdef LCD_SUPPORTED zmain_lcd_init();#endif#ifdef WDT_IN_PM1 /* 看门狗 */ WatchDogEnable( WDTIMX );#endif/ 操作系统开始 osal_start_system(
4、); return ( 0 );任务的建立打开工程,可以看到协调器Coodinator和路由器Router目录下有三个文件,MyfirstAppCoordManage.c、MyfirstAppCoodManage.h和OSAL_MyfirstAppCood.c.任务的添加是在OSAL_MyfirsrAppCood.c文件中添加的。任务的建立打开OSAL_MyfirstAppCoord.c文件,可以看到tasksArr 数组和osalInitTasks函数。在taskArr 数组中存放了所有任务的事件处理函数的地址;osalInitTasks是OSAL的任务初始化函数,所有任务的初始化工作都在这
5、里面完成,并且自动给每个任务分配一个ID。定义任务列表const pTaskEventHandlerFn tasksArr = /MAC层 macEventLoop, /网络层 nwk_event_loop, /硬件抽象层 Hal_ProcessEvent, /APS层 APS_event_loop, /ZDO层 ZDApp_event_loop, /自己添加 My_Task_Process_Event;添加自己的任务void osalInitTasks( void ) uint8 taskID = 0; /分配任务列表 tasksEvents = (uint16 *)osal_mem_all
6、oc( sizeof( uint16 ) * tasksCnt); osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt); /MAC任务 macTaskInit( taskID+ ); /网络层任务 nwk_init( taskID+ ); /HAL任务 Hal_Init( taskID+ ); /APS任务 APS_Init( taskID+ ); /ZDO任务 ZDApp_Init( taskID+ ); /自己添加的任务 My_Task_Init( taskID );任务的建立任务的建立任务添加完了之后就要对所添加的任务和想
7、对应的事件进行初始化。初始化是在MyfirsrAppCoordManage.c文件中。void My_Task_Init( byte task_id ) My_TaskID = task_id; /设置广播目的地址 multi_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;/设置广播地址模式 multi_DstAddr.endPoint = MY_ENDPOINT_NO; multi_DstAddr.addr.shortAddr = 0 xffff; /设置单播信息 Single_DstAddr.addrMode = (afAddrMode_t)
8、Addr16Bit; Single_DstAddr.endPoint = MY_ENDPOINT_NO; /初始化端点描述符 My_EndPoint_Desc.endPoint = MY_ENDPOINT_NO; My_EndPoint_Desc.task_id = &My_TaskID; My_EndPoint_Desc.simpleDesc = (SimpleDescriptionFormat_t*)&My_EndPoint_SimpleDesc; My_EndPoint_Desc.latencyReq = noLatencyReqs; /在AF层注册应用对象(一个端点) afRegist
9、er( &My_EndPoint_Desc ); 相应的事件在事件处理函数中处理UINT16 My_Task_Process_Event(byte task_id,UINT16 events) /当一个消息被发送给任务时,SYS_EVENT_MSG,事件会被传递给任务 /表示有一个消息等待处理。 afIncomingMSGPacket_t *MSGpkt; if ( events & SYS_EVENT_MSG ) /从消息队列中取出消息 MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive(My_TaskID); while ( MSGpkt
10、) switch ( MSGpkt-hdr.event ) /* 当设备成功加入网络以后, ZigBee 设备对象(ZDO)会给所有已经在应用程序框架中注册过的任务 (也就是作为 ZigBee 的应用程序对象存在的任务)发送一个ZDO_STATE_CHANGE消息,消息的状 态指示了当前网络的状态。 */ case ZDO_STATE_CHANGE:/网络状态改变事件 任务的建立 NwkState = (devStates_t)MSGpkt-hdr.status;if ( NwkState = DEV_ZB_COORD ) break; /模块接收到数据信息事件 case AF_INCOMING_MSG_CMD: /处理接收到的数据 My_Task_Process_MSG ( MSGpkt ); break; /按键事件 case KEY_CHANGE: break; default: break; /
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖南岳阳汨罗市第三人民医院面向社会招聘编外劳务派遣制专业技术人员7人备考题库附答案
- 2026福建厦门市湖里区国有资产投资集团有限公司招聘1人参考题库附答案
- 2026福建省标准化研究院下属国有企业第一批人员招聘5人备考题库附答案
- 2026福建省顺昌人力资源服务有限公司( 就业见习岗位)招聘1人参考题库附答案
- 2026西北工业大学材料学院辐射探测材料与器件团队招聘1人(陕西)参考题库附答案
- 公共交通车辆购置管理制度
- 三台县2025年县级事业单位面向县内乡镇公开选调工作人员(16人)参考题库附答案
- 丰城市2025年机关事业单位公开选调工作人员【48人】考试备考题库附答案
- 山东高速集团有限公司2025年下半年校园招聘(管培生和战略产业人才招聘)(60人) 考试备考题库附答案
- 招130人!海北州公安局2025年度面向社会公开招聘警务辅助人员(第二批)参考题库附答案
- 2025 年度VC PE 市场数据报告 投中嘉川
- 2025年网约车司机收入分成合同
- 2026年海南财金银河私募基金管理有限公司招聘备考题库参考答案详解
- 2026年GRE数学部分测试及答案
- 癌症疼痛与心理护理的综合治疗
- 浙江省宁波市镇海中学2026届高二上数学期末教学质量检测模拟试题含解析
- (2025年)电力交易员练习试题附答案
- 2026年咨询工程师现代咨询方法与实务模拟测试含答案
- 2026届湖北省黄冈市重点名校数学高一上期末质量检测试题含解析
- 甘肃省酒泉市2025-2026学年高一上学期期末语文试题(解析版)
- 2026年沪教版初一历史上册期末考试题目及答案
评论
0/150
提交评论