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定时的时间,挂的时间也改变;因为还有其它任务有打印信息,它不再打印了. 自己顶顶先 中断和任务都post吗? 暂时搞不明白,关注! 回复【2楼】abs123
中断和任务都post吗?
-----------------------------------------------------------------------
任务没有post CAN1 have receive data--打印过信息,接收回来的数据是对的 问题已解决,是因为task2中没加while(1).
但由此产生一个疑问:post之后,task2执行完就被挂起,等到下次再post时,因为没有while(1),系统就马上死.
但现在是post后,为何要等到延时时间到才死系统,为什么? 回复【6楼】think_a_second
-----------------------------------------------------------------------
没加while(1)函数跑完了,后面没有了当然挂掉啦,post后只是暂时停掉在那里到时间还是要跑最后当然还是一样要挂掉的! 任务必须是无限循环结构 for() ucosII建立任务的基本要求。。。。。。
页:
[1]