think_a_second 发表于 2010-5-10 01:14:05

ucos信号量问题,定时一到系统就死了

用环回模式调试CAN
两个任务task1,task2
task1
{
从CAN发数据
printf("CAN1 Send!\n");
OSTimeDlyHMSM(0, 0, 1, 100);

}
task2
{
pend       
printf("CAN1 have receive data\n");
OSTimeDlyHMSM(0, 0, 3, 100);

}
ISR
{
post
printf("CAN1\n");
}

结果

CAN1 Send
CAN1
CAN1 have receive data
CAN1 Send
CAN1
CAN1 Send
CAN1
之后挂了(就是3S左右)

改变task定时的时间,挂的时间也改变;因为还有其它任务有打印信息,它不再打印了.

think_a_second 发表于 2010-5-10 04:00:54

自己顶顶先

abs123 发表于 2010-5-10 06:06:28

中断和任务都post吗?

ZYXWVU 发表于 2010-5-10 07:02:06

暂时搞不明白,关注!

think_a_second 发表于 2010-5-10 09:31:18

回复【2楼】abs123
中断和任务都post吗?
-----------------------------------------------------------------------

任务没有post

think_a_second 发表于 2010-5-10 09:33:27

CAN1 have receive data--打印过信息,接收回来的数据是对的

think_a_second 发表于 2010-5-11 12:14:52

问题已解决,是因为task2中没加while(1).
但由此产生一个疑问:post之后,task2执行完就被挂起,等到下次再post时,因为没有while(1),系统就马上死.
但现在是post后,为何要等到延时时间到才死系统,为什么?

liang118038 发表于 2012-1-29 13:03:16

回复【6楼】think_a_second
-----------------------------------------------------------------------

没加while(1)函数跑完了,后面没有了当然挂掉啦,post后只是暂时停掉在那里到时间还是要跑最后当然还是一样要挂掉的!

Euriklxt 发表于 2012-2-15 10:27:30

任务必须是无限循环结构 for() ucosII建立任务的基本要求。。。。。。
页: [1]
查看完整版本: ucos信号量问题,定时一到系统就死了