UCOS II的消息邮箱问题

2019-07-21 04:05发布

用STM32F407跑了一个UCOSII的系统,建了8个任务,中断比较多,有uart的,gpio的,还有canbus的。功能越加越多,发现有时候总会出异常,目前主要由两个:
1. 在任务中调用printf输出到Uart1,有时候会直接跑飞,进hardfaulthandle,发现是用法异常,一直没有头绪,不知道什么原因;
2. 最近又新建了一个任务,和一个消息邮箱,在while(1)里用OSMboxPend(Msg_user,0,&err) 等待邮箱,等待时间的参数是0,应该是无线等待,但是当系统跑起来以后,这个任务里的所有内容都会执行,就跟没有加等待邮箱一样的效果,不知道怎么回事。同样的机制,在其他的任务里使用都是正常的。
望高手指点。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
styleno1
1楼-- · 2019-07-21 08:41
查看[err]信息
jackedison911
2楼-- · 2019-07-21 09:31
回复【2楼】styleno1:
---------------------------------
err=4 , OS_ERR_PEVENT_NULL, 命名定义了这个消息邮箱,也做了初始化 OutCardSN_MBOX    =  OSMboxCreate((void *) 0); 而且如果是始终挂起等待邮箱的话,他不会运行到printf的,所以很奇怪。源代码如下:
INT8U  err;
 INT32U   *msg4;
 
 INT8U i=0;
 (void) p_arg;
while (1)
{
msg4=(INT32U *)OSMboxPend(OutCardSN_MBOX,0,&err);
printf("OSMboxPend err: %d",err);
         ......
        }

打印结果就是 OSMboxPend err: 4
jackedison911
3楼-- · 2019-07-21 11:56
 精彩回答 2  元偷偷看……

一周热门 更多>