打开SampleApp工程后:
因在ZStack里有些资源只能供一个任务使用,所以先把原SampleApp任务的功能去掉(不是删除掉,而是让它不执行起来).
在OSAL_SampleApp.c 里:
const pTaskEventHandlerFn tasksArr[] = {
...
// SampleApp_ProcessEvent 备注掉SampleApp任务的事件处理函数
};
void osalInitTasks( void )
{
...
// SampleApp_Init( taskID ); 备注掉SampleApp任务的初始化函数
}
//完成上面工作后,SampleApp就处于荒弃状态,不会与我们的任务抢资源了.
///
一个任务有任务号,初始化函数,事件处理函数.
自定义的任务由MyApp.h来声明MyApp.c源文件里的函数(不用头文件声明会报错)
MyApp.h
#ifndef MYAPP_H
#define MYAPP_H
void MyApp_Init(uint8 task_id );
uint16 MyApp_ProcessEvent(uint8 task_id, uint16 events );
#endif /* MYAPP_H */
MyApp.c
#include "OnBoard.h"
#include "MyApp.h"
uint8 mytask_id; //用于存放本身的任务号
void MyApp_Init(uint8 task_id )
{
mytask_id = task_id;
}
uint16 MyApp_ProcessEvent(uint8 task_id, uint16 events )
{
return 0;
}
增加MyApp.h, MyApp.c源文件到工程时,先选中App目录,再Add, 如图下:
//
完成上面工作后,还需要把我们的任务加入系统里:
在OSAL_SampleApp.c里:
#include "MyApp.h"
const pTaskEventHandlerFn tasksArr[] = {
...
MyApp_ProcessEvent, //在数组最后加上我们的任务事件处理函数
};
void osalInitTasks( void )
{
...
MyApp_Init(taskID); //在最后加入调用我们任务的初始化函数
}
完成上面的工作后,我们的任务就加入了系统的调度里了.