OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2988|回复: 1

sys_arch_sem_wait()一直阻塞

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2021-12-14
在线时间
6 小时
发表于 2022-3-13 21:07:13 | 显示全部楼层 |阅读模式
lwip移植到ucosiii上,程序在tcp客户端时断开重连时卡在下面的程序中的OSSemPend (*sem,(u16_t)ucos_timeout,OS_OPT_PEND_BLOCKING,NULL,&err);而且在tcp服务器时也卡在这里,有没有遇到同样问题的?求求帮个忙,解答一下;
u32_t sys_arch_sem_wait(sys_sem_t *sem, u32_t timeout)
{
        OS_ERR err;
        u32_t ucos_timeout, timeout_new;
        if(timeout!=0)
        {
                ucos_timeout = (timeout * OS_CFG_TICK_RATE_HZ) / 1000;//转换为节拍数,因为UCOS延时使用的是节拍数,而LWIP是用ms
                if(ucos_timeout < 1)
                        ucos_timeout = 1;
        }else
                ucos_timeout = 0;

        timeout = OSTimeGet(&err);
        OSSemPend (*sem,(u16_t)ucos_timeout,OS_OPT_PEND_BLOCKING,NULL,&err);
        if(err == OS_ERR_TIMEOUT)
                timeout=SYS_ARCH_TIMEOUT;//请求超时       
        else
        {     
                timeout_new = OSTimeGet(&err);
                if (timeout_new>=timeout)
                        timeout_new = timeout_new - timeout;
                else
                        timeout_new = 0xffffffff - timeout + timeout_new;

                timeout = (timeout_new*1000/OS_CFG_TICK_RATE_HZ + 1);//算出请求消息或使用的时间(ms)
        }
        return timeout;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-12-31
在线时间
5 小时
发表于 2022-8-9 11:46:10 | 显示全部楼层
同求,MQTT移植,基于LWIP,也是在断线时卡在这个地方,后面怎么都重连不上
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 04:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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