ZigBee学习之31—osal_init_system.doc_第1页
ZigBee学习之31—osal_init_system.doc_第2页
ZigBee学习之31—osal_init_system.doc_第3页
ZigBee学习之31—osal_init_system.doc_第4页
ZigBee学习之31—osal_init_system.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#1楼主:【原创】ZigBee学习之31osal_init_system文章发表于:2010-02-12 17:30 /初始化操作系统,主要是堆栈,时钟,电源模式,任务号分配 osal_init_system();/通过创建定义在任务表【OSAL_Tasks.h】中的任务来初始化任务系统【OSAL.c】byte osal_init_system( void ) /初始化内存分配系统【OSAL_Memory.c】 osal_mem_init(); /初始化消息队列,其实就是一个指针 osal_qHead = NULL;/ osal_msg_q_t osal_qHead;/ typedef void * osal_msg_q_t; #if defined( OSAL_TOTAL_MEM )/如果定义了OSAL_TOTAL_MEM就会跟踪系统的堆栈使用情况并通过LCD显示出来 osal_msg_cnt = 0;#endif /初始化系统定时器【OSAL_Timers.c】 osalTimerInit();void osalTimerInit( void ) / Initialize the rollover modulo tmr_count = TICK_TIME;/【OnBoard.h】/ #define TICK_TIME 1000 /每次时钟滴答的时间(毫秒) tmr_decr_time = TIMER_DECR_TIME;/ #define TIMER_DECR_TIME 1 osal_timer_activate( false ); /初始化系统定时器,实际上是停止了时钟定时器【OSAL_Timers.c】void osal_timer_activate( byte turn_on ) osal_timer_hw_setup( turn_on ); /设置时钟硬件【OSAL_Timers.c】void osal_timer_hw_setup( byte turn_on ) if (turn_on) HalTimerStart (OSAL_TIMER, tmr_count );/启动时钟 else HalTimerStop (OSAL_TIMER); timerActive = turn_on; timerActive = false; osal_systemClock = 0; /初始化电源管理系统 osal_pwrmgr_init();/配置器件使用的电源模式【OSAL_PwrMgr.c】void osal_pwrmgr_init( void ) pwrmgr_attribute.pwrmgr_device = PWRMGR_ALWAYS_ON; / 默认不打开节能模式/【OSAL_PwrMgr.h】/ #define PWRMGR_ALWAYS_ON 0 /不使用节能模式/#define PWRMGR_BATTERY 1 /使用电池供电,允许进入休眠模式/ pwrmgr_attribute_t pwrmgr_attribute;typedef struct uint16 pwrmgr_task_state; uint16 pwrmgr_next_timeout; uint16 accumulated_sleep_time; uint8 pwrmgr_device; pwrmgr_attribute_t; pwrmgr_attribute.pwrmgr_task_state = 0; / Cleared. All set to conserve /初始化系统任务,为每个任务调用初始化函数 osalInitTasks();/【sapi.c】void osalInitTasks( void ) uint8 taskID = 0; tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt); osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt);/ uint16 *tasksEvents;/ const uint8 tasksCnt = sizeof( tasksArr ) / sizeof( tasksArr0 );/任务队列中其实是一个个的事件处理函数,这里分配了任务要用的内存空间。然后为每个任务分配一个不同的任务ID,ID递增,按照初始化的顺序排列在tasksArr队列中 macTaskInit( taskID+ ); nwk_init( taskID+ ); Hal_Init( taskID+ );#if defined( MT_TASK ) MT_TaskInit( taskID+ );#endif APS_Init( taskID+ ); ZDApp_Init( taskID+ ); SAPI_Init( task

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论