00001 #ifndef OS_TASK_H 00002 #define OS_TASK_H 00003 00004 #define MAX_TASK_NUM 7 00005 #define TASK_STACK_SIZE 64 00006 00007 typedef struct OS_TASK_CONTROL{ 00008 INT8U Status; // bit0: no task flag(0) 00009 INT8U TaskNum; // Total number of tasks created 00010 INT8U CurTaskId; // Current running task 00011 INT8U NextTaskId; 00012 }; 00013 //typedef struct TASK_DEFINE{ 00014 typedef struct os_tcb{ 00015 INT8U *Stack; // 0~255...now I give it 10 tasks and 100 bytes per task 00016 INT8U Id; // 0~255...now support 10 tasks 00017 void (*function)(void); // declare a function pointer points to function(void); 00018 struct os_tcb *Prev; 00019 struct os_tcb *Next; 00020 }OS_TCB; 00021 extern struct OS_TASK_CONTROL OsTaskCtrl; 00022 extern OS_TCB TaskTable[]; 00023 00024 extern void OsTaskPowerOnInit() LargeReentrant; 00025 extern INT8U OsTaskCreat(void (*Task)(void)) LargeReentrant; 00026 extern void OsTaskDelete(void (*Task)(void)) LargeReentrant; 00027 extern void OsSystemTask(void) LargeReentrant; 00028 00029 #endif 00030