例子:D:\Texas Instruments\ZStack-1.4.3-1.2.1\Projects\zstack\Samples\SampleApp\CC2430DB 這里講如何添加一個(gè)簡單的任務(wù),任務(wù)名為yylong,在OSAL_SampleApp.c中: void osalInitTasks( void ) { …………….. ZDApp_Init( taskID++ ); SampleApp_Init( taskID++ ); yylong_Init( taskID ); //添加任務(wù)初始化函數(shù) } 任務(wù)的處理函數(shù)地址: const pTaskEventHandlerFn tasksArr[] = { …………….. ZDApp_event_loop, SampleApp_ProcessEvent, yylong_Process //添加任務(wù)處理函數(shù) }; 這兩個(gè)函數(shù)的順序是對應(yīng)的,否則會張冠李戴; 然后在SampleApp.c中定義這兩個(gè)函數(shù): void yylong_Init( uint8 task_id ) { yylong_TaskID = task_id;//用yylong_TaskID全局變量記住自己的任務(wù)號, //如有需要再初始化一些自己的東西, } uint16 yylong_Process( uint8 task_id, uint16 events ) { P1_0=~P1_0; //led1翻轉(zhuǎn) osal_start_timerEx (yylong_TaskID, 3, 250);//250ms后再次啟動yylong_TaskID任務(wù),即回到該函數(shù) return 0; } 然后在SampleApp.h中進(jìn)行聲明: extern void yylong_Init(uint8 task_id ); extern UINT16 yylong_Process( uint8 task_id, uint16 events ); 好了,所有工作已完成,我們用SW3啟動該任務(wù),啟動后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后執(zhí)行yylong_Process(); } 至此,一個(gè)任務(wù)添加完成
|