UCOS创建任务出现问题
问题:有6个任务
定义
#define Main_Task_STK_SIZE 1024*5
#define DATA_SAVE_STK_SIZE 1024*5
#define MAP_PRO_STK_SIZE 1024*1
#define KEY_PRO_STK_SIZE 1024*5
#define A_PRO_STK_SIZE 1024*5
#define G_DATA_STK_SIZE 1024*5
#define Main_Task_PRIO 6
#define DATA_SAVE_PRIO 10
#define MAP_PRO_PRIO 8
#define KEY_PRO_PRIO 3
#define A_PRO_PRIO 6
#define G_DATA_PRIO 6
OS_STK TaskStartStk[];
OS_STK Main_TaskStk[];
OS_STK DATA_SAVEStk[];
OS_STK MAP_PROStk[];
OS_STK KEY_PROStk[];
OS_STK A_PROStk[];
OS_STK G_DATAStk[];
任务创建
OSTaskCreate(A_PRO, (void *)0,(void *)& A_PROStk[A_PRO_STK_SIZE-1],A_PRO_PRIO);
OSTaskCreate(G_DATA, (void *)0,(void *)& G_DATAStk[G_DATA_STK_SIZE-1],G_DATA_PRIO);
OSTaskCreate(Main_Task, (void *)0,(void *)& Main_TaskStk[Main_Task_STK_SIZE-1],Main_Task_PRIO);
OSTaskCreate(DATA_SAVE, (void *)0,(void *)& DATA_SAVEStk[DATA_SAVE_STK_SIZE-1],DATA_SAVE_PRIO);
OSTaskCreate(MAP_PRO, (void *)0,(void *)&MAP_PROStk[MAP_PRO_STK_SIZE-1],MAP_PRO_PRIO);
OSTaskCreate(KEY_PRO, (void *)0,(void *)&KEY_PROStk[KEY_PRO_STK_SIZE-1],KEY_PRO_PRIO);
当先创建A_PRO任务时,就不能进入G_DATA这个任务(但是如果修改A_PRO的优先权为8时,就能进入G_DATA这个任务);反过来就不能进入A_PRO这个任务。而其他任务创建先后,及优先级对这两个任务均没有影响。
void A_PRO (void *data)
{
data = data;
while(1)
{
OSTimeDlyHMSM(0, 0, 1, 0);
//Beep();//1 通过响声,或者断点来判断是否进入任务 //Beep();//1
}
}
void G_DATA (void *data)
{
data = data;
while(1)
{
OSTimeDlyHMSM(0, 0, 1, 0);
Beep();//1 通过响声,或者断点来判断是否进入任务
}
}