void task1(void) { INT32U *mbox_contents; while (1) { mbox_contents = (INT32U *)OSMboxPend(mailbox, 100, &return_code); OSTimeDly(50); LED1=~LED1; } }
void task2(void) { INT32U *mbox_contents; while (1) { OSTimeDly(100); LED2=~LED2; } } 如果task1的mbox_contents = (INT32U *)OSMboxPend(mailbox, 100, &return_code)去掉则整个程序运行正常, LED1,LED2分别以不同的频率闪烁。但是task1加上mbox_contents = (INT32U *)OSMboxPend(mailbox, 100, &return_code)后,整个程序挂掉跑飞了。现在有个疑问:在uCos-II里,OSMboxPend()函数运行时会检测邮箱,一旦发现邮箱无邮件或者超时,任务就会挂起,执行优先级更高的任务。task1挂起后,应该切换到task2.怎么会让程序崩溃呢?初学ucos,不大明白,望大家指点一下,谢谢。 |