OpenEdv-开源电子网

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

关于ucosII互斥信号量的疑问

[复制链接]

19

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2012-4-16
在线时间
0 小时
发表于 2012-7-29 17:33:49 | 显示全部楼层 |阅读模式
我在一个任务中占用了互斥信号量,但并不释放,而是一直停在一个while(1);里,为什么其他的任务还是能继续执行OSMutexPend(test,0,&err)后面的程序?不是要等待互斥信号量有效吗?
我想超越这平凡的生活,注定现在暂时的漂泊!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
139
金钱
139
注册时间
2012-4-16
在线时间
0 小时
 楼主| 发表于 2012-7-29 18:16:19 | 显示全部楼层
知道怎么回事了,原来两个较高的优先级的任务,开始就直接OSMutexPend(),任务的最后才OSMutexPost(),那个低优先级的任务都没有机会获得互斥信号量了,只剩前面两个高优先级的任务交替着得到互斥信号量,而那个while(1);正好就在最低的优先级任务里。解决办法在OSMutexPend()前面或者OSMutexPost()后面,加延时函数。或者别的能使任务挂起一会的都行。
我想超越这平凡的生活,注定现在暂时的漂泊!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-7-29 20:03:34 | 显示全部楼层
学习
回复 支持 反对

使用道具 举报

3

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-11-2
在线时间
8 小时
发表于 2016-1-13 22:03:07 | 显示全部楼层
//LED0èÎÎñ
void led0_task(void *pdata)
{                
        while(1)
        {       
                OSMutexPend(flag,0,&err);
                        printf("ÎòμÄèÎÎñ\n");        fun();
                //OSMutexPost(flag);
                delay_ms(1000);
        };
}

//LED1èÎÎñ
void led1_task(void *pdata)
{          
        while(1)
        {
                OSMutexPend(flag,0,&err);
        printf("ÄãμÄèÎÎñ\n");                        fun();
                //OSMutexPost(flag);
                delay_ms(2000);
        };
}


我就两个任务 都不释放互斥信号量  程序还能正常运行 为什么啊 ???
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2018-6-8
在线时间
18 小时
发表于 2018-9-26 16:28:59 | 显示全部楼层
36918453 发表于 2016-1-13 22:03
//LED0èÎÎñ
void led0_task(void *pdata)
{                

我也正需要问问这是怎么回事?大神有解答的吗?
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2020-12-31
在线时间
27 小时
发表于 2021-6-28 14:46:18 | 显示全部楼层
梁先生UP 发表于 2018-9-26 16:28
我也正需要问问这是怎么回事?大神有解答的吗?

帮顶....
回复 支持 反对

使用道具 举报

0

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2020-12-31
在线时间
27 小时
发表于 2021-6-28 14:46:54 | 显示全部楼层
36918453 发表于 2016-1-13 22:03
//LED0èÎÎñ
void led0_task(void *pdata)
{                

帮顶....
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 04:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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