查看: 4079|回复: 5

[其他] 新手学ucos,建了三个任务,试验消息邮箱。。。为什么进不了最高优先级任务?

[复制链接]

该用户从未签到

5

主题

24

帖子

0

新手上路

Rank: 1

积分
43
最后登录
1970-1-1
发表于 2012-2-16 17:42:22 | 显示全部楼层 |阅读模式
<font color="#000000">刚开始学uCOS,建了三个任务,
TaskA,TaskB,TaskC,
优先级分别是4,5,6
现在打算试验邮箱广播功能,
TASKB发送邮箱,TASKA,TASKC接收邮箱。
1.想测试是否一个消息出去,
是否第一个就绪的优先级最高的任务接收到之后就删除这个消息?
但是发现程序一直停留在TASKB中。
不知道为什么?程序如下。有大侠帮忙解惑吗?

void  TaskA (void *pdata)
{
  INT16U *tempvalue;
pdata  = pdata;                            /* nothing  */
for(;;) 
{

  tempvalue = OSMboxPend(BroadBox,0,&err);
asm NOP;                 
OSTimeDly(5);   
}
}

void  TaskB (void *pdata)
{
  INT16U *tempvalue,MeasureValue[12];
  INT8U i;
  
pdata  = pdata;                            /* nothing  */
for(;;) 
{         
    for(i=0;i
我知道答案 目前已有4人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-2-17 11:11:58 | 显示全部楼层

    RE:新手学ucos,建了三个任务,试验消息邮箱。。。为什么进不了最高优先级任务?

    方法是对的,你在3个里都加断点看看能不能进去。不行就分开创建任务,看看单独任务是不是能进去。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    24

    帖子

    0

    新手上路

    Rank: 1

    积分
    43
    最后登录
    1970-1-1
     楼主| 发表于 2012-2-17 12:27:31 | 显示全部楼层

    RE:新手学ucos,建了三个任务,试验消息邮箱。。。为什么进不了最高优先级任务?

    设断点了,一开始TASKA 进去了,
    但是运行到tempvalue = OSMboxPend(BroadBox,0,&err);后,
    切换到TASKB,后面都只能在TASKB运行,就是不能在
    TASKB的POST邮箱后,切换回去。不知道为啥?
    不行的话,就要跟踪到内核里看哪里出问题了。
    谢谢“安”大侠。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-2-17 16:14:47 | 显示全部楼层

    RE:新手学ucos,建了三个任务,试验消息邮箱。。。为什么进不了最高优先级任务?

    timeout:is an optional timeout period (in clock ticks).  If non-zero, your task will wait for a message to arrive at the mailbox up to the amount of time  specified by this argument.  If you specify 0, however, your task will wait
    forever at the specified mailbox or, until a message arrives.
    这里你不应该把timeout的时间设置为0.你换个值试试。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    24

    帖子

    0

    新手上路

    Rank: 1

    积分
    43
    最后登录
    1970-1-1
     楼主| 发表于 2012-2-18 11:39:08 | 显示全部楼层

    RE:新手学ucos,建了三个任务,试验消息邮箱。。。为什么进不了最高优先级任务?

    换其他值也不行,我再试试。
    只不过觉得之前的思路:TASKA在死等消息邮箱发布,
    TASKB在post消息邮箱后应该就能切换到TASKA。
    谢谢安大侠。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-2-18 16:27:34 | 显示全部楼层

    RE:新手学ucos,建了三个任务,试验消息邮箱。。。为什么进不了最高优先级任务?

    你仿真一下,看看是不是程序在进入OSMboxPend以后,发生错误了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-12 19:10 , Processed in 0.097122 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表