原创 Jennic ZigBee 协议栈BOS下的任务创建

2009-3-19 20:13 2754 9 9 分类: 通信

使用Jennic的协议栈需要使用BOS系统,该系统基于一种简单调度调度机制,可以在该系统内创建两个用户任务,一个是BOS默认创建的任务,而用户的应用只可以创建一个任务。任务是不可剥夺性的,由BOS系统时间驱动。


 


 


下面是两个关于任务创建的函数:


bool_t bBosCreateTask (const void (*pfvInit)(uint8), const void (*pfvHandler)(void *, uint8, uint8)); 


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


这个函数是用来在BOS中注册用户任务,参数是两个函数的指针,一个是初始化任务函数的指针,另一个是处理从任务接收到消息和事件的函数的指针。


在BOS中用户任务限制在两个,包括由bBosRun()创建的默认用户任务JZA_AppEventHandler(),该函数只可以用来创建第二个用户任务,如果需要,bBosCreateTask函数由下面的函数调用:



PUBLIC void JZA_vAppDefineTasks(void); 


这个函数用来在BOS中注册用户任务,在应用第一次运行之前由BOS调用一次



 


 


下面是一个示例:


void vAppTask1Init(uint8 u8Handler) 



   gu8AppHandle = u8Handler; 


   bBosSetEvent(gu8AppHandle, EV_START_DEVICE); 



void vAppTask1Handler(void* vTempTaskMsg, uint8 u8TempTaskMsgLen, uint8 u8Event) 



   if(u8Event & EV_START_DEVICE) 


   { 


      vAppSystemInit(); 


      JZS_vStartStack(); 


   } 



 


bool_t JZA_vAppDefineTask(void) 



   if (!bBosCreateTask(vAppTask1Init, vAppTask1Handler)) 


   { 


       vBosPanic(1); 


   } 


   return TRUE; 


文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条