UCOS创建任务出现问题

andylao62 2010-08-29 12:27:13
问题:有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 通过响声,或者断点来判断是否进入任务
}
}



...全文
274 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
oppddo 2010-08-29
  • 打赏
  • 举报
回复
UCOS里,每个任务的优先级必须是不同的,你创建相同优先级的任务,有可能冲突了。

而其他任务创建先后,及优先级对这两个任务均没有影响???
——没影响是指两个任务都能够进去吗??

Beep();//1 通过响声,或者断点来判断是否进入任务
这个函数的你两个任务都产生的响声是一样吗?
是的话,怎么判断进入哪个任务?
andylao62 2010-08-29
  • 打赏
  • 举报
回复
周末没人吗?
andylao62 2010-08-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 oppddo 的回复:]
UCOS里,每个任务的优先级必须是不同的,你创建相同优先级的任务,有可能冲突了。

得到正解,谢谢

2,425

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 其他硬件开发
社区管理员
  • 其他硬件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧