#ifndef _TASK_H_ #define _TASK_H_ #include #include "cfg/task_cfg.h" #include "pt_thread/pt_header.h" #define TASK_ID(FUNC) TASK_ID_##FUNC #define TASK_NAME(FUNC) #FUNC #ifndef UNUSED_PARAM #define UNUSED_PARAM(p) (void)(p) #endif #ifndef NULL #define NULL (void*)0 #endif #ifdef __cplusplus extern "C" { #endif enum TASK_ID { TASK_ID(TaskTimer), #include "cfg/taskid.h" }; enum TIMER_MODE { TIMER_MODE_TIMER = 0, TIMER_MODE_ONCEROUTINE, TIMER_MODE_CYCROUTINE }; // typedef struct mytask { int32_t lActive; // >0:活动,1:初始化后立即启动 int32_t lTaskMode; // 任务工作方式 int32_t lTaskID; // 任务ID int8_t cTaskName[TASK_NAME_LEN]; //int32_t lTaskName; // 任务类型 int32_t lLastTime; int32_t lPeriod; // 活动周期,uint=1mS int8_t (*TaskProc)(struct pt* pt1); // 任务处理子程序 struct pt pt1; }TASK_DATA,*PTASK_DATA; // define timer data struct typedef struct mytimer { int32_t cUse; int8_t *TimerID; int32_t cMode; // timer work mode int32_t reserve1; int32_t lPeriod; // timer period, unit=10ms. int32_t lLastTime; // timer count for reload void (*routine)(void * Param1); // user's timer routine void *Param1; }TIMER_DATA,*PTIMER_DATA; enum TASK_MODE {TASK_MODE_ONCE,TASK_MODE_PERIOD}; void InitSysTick(void); void InitTask(void); void TaskProc(void); void Init_EventRecorder(void); int32_t ActiveTask(int32_t cTaskType, int32_t lPeriod); int32_t SuspendTask(int32_t cTaskType); int32_t ActiveTaskNow(int32_t cTaskType, int32_t lPeriod); int32_t SetTaskLastTime(int32_t cTaskType,int32_t lLastTime); int32_t StartTimer2(int32_t *TimerID,int32_t cMode,int32_t lPeriod,void (* routine)(void * Param1),void * Param1); int32_t StartTimer(int32_t cMode,int32_t lPeriod,void (* routine)(void * Param1),void * Param1); int32_t StopTimer ( int32_t * pcTimerNumber ); void StopAllTimer(void); //////////////// #ifdef __cplusplus } #endif #endif