硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2263|回复: 4
收起左侧

[μCOS-III] 信号量超时等待请教

[复制链接]

116

主题

800

回帖

1148

积分

至尊会员

积分
1148
QQ
发表于 2017-5-25 10:01:21 | 显示全部楼层 |阅读模式
程序调用  BSP_OS_SemWait (&SEM_LMT_CHECK_RDY, 20000); 进行信号量等待,本意是想等待20秒未接收到信号则timeout, 但是如果不发送信号则程序一直死在上面无法超时跳出
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
发表于 2017-5-25 11:05:34 | 显示全部楼层
直接调用函数
OSSemPend((OS_SEM *)p_sem,
              (OS_TICK )dly_ticks,
              (OS_OPT  )OS_OPT_PEND_BLOCKING,
              (CPU_TS  )0,
              (OS_ERR *)&err);

测试。
回复

使用道具 举报

116

主题

800

回帖

1148

积分

至尊会员

积分
1148
QQ
 楼主| 发表于 2017-5-25 11:28:44 | 显示全部楼层
在这个函数中也是调用该函数,没发现有什么问题
回复

使用道具 举报

116

主题

800

回帖

1148

积分

至尊会员

积分
1148
QQ
 楼主| 发表于 2017-5-25 11:30:14 | 显示全部楼层
OS_ERR      err;
    CPU_INT32U  dly_ticks;


    dly_ticks  = ((dly_ms * DEF_TIME_NBR_mS_PER_SEC) / OSCfg_TickRate_Hz);

    OSSemPend((OS_SEM *)p_sem,               
              (OS_TICK )dly_ticks,              
              (OS_OPT  )OS_OPT_PEND_BLOCKING,  
              (CPU_TS  )0,                       
              (OS_ERR *)&err);                  

    if (err != OS_ERR_NONE) {
       return (DEF_FAIL);
    }

    return (DEF_OK);
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
发表于 2017-5-25 11:32:30 | 显示全部楼层

回 jcx0324 的帖子

jcx0324:    OS_ERR      err;
    CPU_INT32U  dly_ticks;


    dly_ticks  = ((dly_ms * DEF_TIME_NBR_mS_PER_SEC) / OSCfg_TickRate_Hz);
....... (2017-05-25 11:30) 
查下这个函数获取的数值是否有问题

  dly_ticks  = ((dly_ms * DEF_TIME_NBR_mS_PER_SEC) / OSCfg_TickRate_Hz);

另外你的滴答定时器是不是按照你设置的周期在运行。

主要就这两个问题了,别的基本都问题不大。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 10:36 , Processed in 0.158906 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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