例子:D:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SampleApp\CC2430DB 这里讲如何添加一个简单的任务,任务名为yylong,在OSAL_SampleApp.c中: void osalInitTasks( void ) { …………….. ZDApp_Init( taskID++ ); SampleApp_Init( taskID++ ); yylong_Init( taskID ); //添加任务初始化函数 } 任务的处理函数地址: const pTaskEventHandlerFn tasksArr[] = { …………….. ZDApp_event_loop, SampleApp_ProcessEvent, yylong_Process //添加任务处理函数 }; 这两个函数的顺序是对应的,否则会张冠李戴; 然后在SampleApp.c中定义这两个函数: void yylong_Init( uint8 task_id ) { yylong_TaskID = task_id;//用yylong_TaskID全局变量记住自己的任务号, //如有需要再初始化一些自己的东西, } uint16 yylong_Process( uint8 task_id, uint16 events ) { P1_0=~P1_0; //led1翻转 osal_start_timerEx (yylong_TaskID, 3, 250);//250ms后再次启动yylong_TaskID任务,即回到该函数 return 0; } 然后在SampleApp.h中进行声明: extern void yylong_Init(uint8 task_id ); extern UINT16 yylong_Process( uint8 task_id, uint16 events ); 好了,所有工作已完成,我们用SW3启动该任务,启动后led1闪烁: void SampleApp_HandleKeys( uint8 shift, uint8 keys ) { if ( keys & HAL_KEY_SW_1 ) { ………………….. SampleApp_SendFlashMessage( SAMPLEAPP_FLASH_DURATION ); }
………………….. if ( keys & HAL_KEY_SW_3 ) osal_start_timerEx (yylong_TaskID, 3, 250); //250ms后执行yylong_Process(); } 至此,一个任务添加完成
|