//创建统计任务 #if OS_TASK_STAT_EN > 0 static void OS_InitTaskStat (void) { #if OS_TASK_CREATE_EXT_EN > 0 //允许生成OSTaskCreateExt()函数 #if OS_STK_GROWTH == 1 //堆栈生长方向向下 (void)OSTaskCreateExt(OS_TaskStat, //建立扩展任务;产生一个统计任务 (void *)0, //没有(传递参数指针) &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], //分配任务堆栈栈顶指针 OS_STAT_PRIO, //分配任务优先级 OS_TASK_STAT_ID, //(未来的)优先级标识(与优先级相同) &OSTaskStatStk[0], //分配任务堆栈栈底指针 OS_TASK_STAT_STK_SIZE, //指定堆栈的容量(检验用) (void *)0, //没有(指向用户附加的数据域的指针) OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* Enable stack checking + clear */ #else //建立扩展任务;堆栈生长方向向上 (void)OSTaskCreateExt(OS_TaskStat, //产生一个统计任务 (void *)0, //没有(传递参数指针) &OSTaskStatStk[0], //分配任务堆栈栈底指针 OS_STAT_PRIO, //分配任务优先级 OS_TASK_STAT_ID, //(未来的)优先级标识(与优先级相同) &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], //分配任务堆栈栈顶指针 OS_TASK_STAT_STK_SIZE, //指定堆栈的容量(检验用) (void *)0, //没有(指向用户附加的数据域的指针) OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); /* Enable stack checking + clear */ #endif #else //否则只能生成OSTaskCreate()函数 #if OS_STK_GROWTH == 1 //堆栈生长方向向下 (void)OSTaskCreate(OS_TaskStat, //产生一个统计任务 (void *)0, //没有(传递参数指针) &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1], //分配任务堆栈栈顶指针 OS_STAT_PRIO); //分配任务优先级 #else //否则堆栈生长方向向上 (void)OSTaskCreate(OS_TaskStat, //产生一个统计任务 (void *)0, //没有(传递参数指针) &OSTaskStatStk[0], //分配任务堆栈栈底指针 OS_STAT_PRIO); //分配任务优先级 #endif #endif } #endif