ayb_ice 发表于 2013-11-7 10:43 
这个系统是不能抢占的,任务必须主动释放CPU,
如果已经使能了轮转,还不运行的话,则一定是程序问题
任务 ...
问题好像出在下面的这段程序中:
void uart_rec_task(void) _task_ 1
{
uint8_t status1,status2;
while(1) {
status1 = os_wait1(K_SIG);
switch(status1)
{
case SIG_EVENT:
{
status2 = os_wait2(K_TMO,100);
switch(status2)
{
case TMO_EVENT:
{
os_send_signal(2);
break;
}
default: break;
}
break;
}
default: break;
}
os_switch_task();
}
}
用这段代码就有问题,如果改成下面的样子就可以:
void uart_rec_task(void) _task_ 1
{
uint8_t i,j;
uint8_t status;
while(1)
{ os_wait1(K_SIG);
status = os_wait(K_SIG|K_IVL,100,0);
switch(status)
{
case SIG_EVENT:
{ os_reset_interval(100);
break;
}
caseTMO_EVENT:
{ os_send_signal(2);
break;
}
default: break;
}
os_switch_task();
}
}
看了半天也没看出问题也在那里,轮转已经关了,任务也已建立!两者唯一的不同就是上面的这段代码!!!
|