zigbee学习笔记(一)

zigbee学习笔记(一)

ID:37714139

大小:21.01 KB

页数:7页

时间:2019-05-29

zigbee学习笔记(一)_第1页
zigbee学习笔记(一)_第2页
zigbee学习笔记(一)_第3页
zigbee学习笔记(一)_第4页
zigbee学习笔记(一)_第5页
资源描述:

《zigbee学习笔记(一)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Zstack的任务处理机制Zmain.c中初始化部分重点掌握:osal_init_system();//初始化操作系统osal_start_system();//执行操作系统Z-Stack操作系统初始化中:osalInitTasks();//初始化系统的任务初始化系统的任务:voidosalInitTasks(void){uint8taskID=0;//分配内存,返回指向缓冲区的指针tasksEvents=(uint16*)osal_mem_alloc(sizeof(uint16)*tasksCnt);//设置所分配的内存空间单元值为0osa

2、l_memset(tasksEvents,0,(sizeof(uint16)*tasksCnt));//任务优先级由高向低依次排列,高优先级对应taskID的值反而小macTaskInit(taskID++);//macTaskInit(0),用户不需考虑nwk_init(taskID++);//nwk_init(1),用户不需考虑Hal_Init(taskID++);//Hal_Init(2),用户需考虑APS_Init(taskID++);//APS_Init(3),用户不需考虑ZDApp_Init(taskID++);//ZDApp_I

3、nit(4),用户需考虑7GenericApp_Init(taskID);//GenericApp_Init_Init(5),用户需考虑}注明用户不需考虑的任务Ti已经给初始化完成了,在编程的时候可以不予考虑。我们只需要考虑硬件层和应用层的任务初始化。如:Hal_Init(taskID++);ZDApp_Init(taskID++);GenericApp_Init(taskID);下面说一下如何在程序中加入自己的任务:在osalInitTasks()和tasksArr[]添加相应的项就可以了。1.修改osalInitTasks()Voidos

4、alInitTasks(void){……OuhsApp_Init(taskID++);PhotoApp_Init(taskID);}2.修改tasksArr[]ConstpTaskEventHandlerFntaskArr[]={……OuhsApp_ProcessEventPhotoApp_ProcessEvent};3.添加-Init()和-ProcessEvent()VoidPhotoApp_Init(uint8task_id){7}Uint16PhotoApp_ProcessEvent(uint8task_iduint16events)

5、{}以上是任务的初始化与任务的添加,下面看以下任务是如何处理的?osal_start_system();//执行操作系统voidosal_start_system(void){#if!defined(ZBIT)&&!defined(UBIT)for(;;)//ForeverLoop#endif{osal_run_system();}}osal_run_system:voidosal_run_system(void){uint8idx=0;osalTimeUpdate();//这里是在扫描哪个事件被触发了,然后置相应的标志位7Hal_Proce

6、ssPoll();//硬件进程调用,ThisreplacesMT_SerialPoll()andosal_check_timer().do{if(tasksEvents[idx])//Taskishighestprioritythatisready.{break;//得到待处理的最高优先级任务索引号idx}}while(++idx

7、保护events=tasksEvents[idx];//提取需要处理的任务中的事件tasksEvents[idx]=0;//CleartheEventsforthistask.清除本次任务的事件HAL_EXIT_CRITICAL_SECTION(intState);//退出临界区activeTaskID=idx;events=(tasksArr[idx])(idx,events);//通过指针调用任务处理函数,关键activeTaskID=TASK_NO_TASK;7HAL_ENTER_CRITICAL_SECTION(intState);/

8、/进入临界区,保护tasksEvents[idx]

9、=events;//Addbackunprocessedeventstothecurrenttask.保存未处理

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。