OpenEdv-开源电子网

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

ucosII实验 信号量和邮箱的很多疑惑,希望原子哥赐教

[复制链接]

21

主题

50

帖子

0

精华

初级会员

Rank: 2

积分
156
金钱
156
注册时间
2013-1-20
在线时间
0 小时
发表于 2013-1-29 18:54:46 | 显示全部楼层 |阅读模式
疑问1:蜂鸣器任务
void beep_task(void *pdata)
{
 u8 err;
 while(1)
 {
  OSSemPend(sem_beep,0,&err);  //请求信号量函数
  BEEP=1;
  delay_ms(60);
  BEEP=0;
  delay_ms(940);
 }         
}
这个任务为啥在程序运行中蜂鸣器不响,只有按下KEY1才响呢?
疑问2:
LCD_ShowxNum(192,50,sem_beep->OSEventCnt,3,16,0X80);//显示信号量的值
为什么我没看到SEM的值有任何变化。
啥也不懂就是想跟大家学习
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-30 10:52:30 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-1-30 10:53:09 | 显示全部楼层
ucosii,这里蜂鸣器任务是要先等待信号量,没信号量,当然不响了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-1-12
在线时间
13 小时
发表于 2019-1-30 18:14:58 | 显示全部楼层
正点原子 发表于 2013-1-30 10:53
ucosii,这里蜂鸣器任务是要先等待信号量,没信号量,当然不响了.

原子哥,请问下蜂鸣器这个任务比led和触摸屏的优先级高,程序执行到OSSemPend这个函数上就停到这里等待信号量的发送,相当于死到这里了,为什么我在实验的时候led和触摸屏是可以运行的。
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-1-12
在线时间
13 小时
发表于 2019-1-30 18:18:02 | 显示全部楼层
正点原子 发表于 2013-1-30 10:53
ucosii,这里蜂鸣器任务是要先等待信号量,没信号量,当然不响了.

还有一个 原子哥,信号量的改变是不是只要调用OSSemPost这个函数就会把相应信号量的值改变,接受信号量的函数就会知道信号量发生改变从而动作,这个改变的值具体是“0”到“1”这种改变还是其他的改变方式
回复 支持 反对

使用道具 举报

27

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
330
金钱
330
注册时间
2018-7-20
在线时间
118 小时
发表于 2019-1-31 09:20:56 | 显示全部楼层
背成一把刀 发表于 2019-1-30 18:14
原子哥,请问下蜂鸣器这个任务比led和触摸屏的优先级高,程序执行到OSSemPend这个函数上就停到这里等待信 ...

你可以看一下有关于操作系统的书,ucos系统任务等待期间程序是不会死的,只是阻塞等待,然后执行其他任务,任务一共有5种状态
我只喜欢喜欢我的人
回复 支持 反对

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2019-1-31 10:35:59 | 显示全部楼层
背成一把刀 发表于 2019-1-30 18:14
原子哥,请问下蜂鸣器这个任务比led和触摸屏的优先级高,程序执行到OSSemPend这个函数上就停到这里等待信 ...

不是死在这里,是阻塞在这里,其他任务还是正常调度执行的,这里的阻塞可以消除进入就绪的从而这个任务还可以经过调度执行的
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-1-12
在线时间
13 小时
发表于 2019-1-31 16:35:34 | 显示全部楼层
szczyb1314 发表于 2019-1-31 10:35
不是死在这里,是阻塞在这里,其他任务还是正常调度执行的,这里的阻塞可以消除进入就绪的从而这个任务还 ...

也就是说这里的阻塞是让任务处于挂起状态?别的低的优先级任务也可以执行?
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-1-12
在线时间
13 小时
发表于 2019-1-31 16:35:55 | 显示全部楼层
fang百川 发表于 2019-1-31 09:20
你可以看一下有关于操作系统的书,ucos系统任务等待期间程序是不会死的,只是阻塞等待,然后执行其他任务 ...

也就是说这里的阻塞是让任务处于挂起状态?别的低的优先级任务也可以执行?
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-1-12
在线时间
13 小时
发表于 2019-1-31 16:36:22 | 显示全部楼层
szczyb1314 发表于 2019-1-31 10:35
不是死在这里,是阻塞在这里,其他任务还是正常调度执行的,这里的阻塞可以消除进入就绪的从而这个任务还 ...

麻烦你能详细给我说说不
回复 支持 反对

使用道具 举报

5

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2014-1-12
在线时间
13 小时
发表于 2019-1-31 16:36:43 | 显示全部楼层
fang百川 发表于 2019-1-31 09:20
你可以看一下有关于操作系统的书,ucos系统任务等待期间程序是不会死的,只是阻塞等待,然后执行其他任务 ...

麻烦你能详细给我说说不
回复 支持 反对

使用道具 举报

27

主题

133

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
330
金钱
330
注册时间
2018-7-20
在线时间
118 小时
发表于 2019-2-1 08:55:01 | 显示全部楼层
背成一把刀 发表于 2019-1-31 16:35
也就是说这里的阻塞是让任务处于挂起状态?别的低的优先级任务也可以执行?

可以这么想,但是最终下一个执行什么任务还是看程序里面怎么写的,一般阻塞延时函数,或者等待信号量等,会让当前任务阻塞,然后执行别的任务,等到满足条件再返回执行这个任务
我只喜欢喜欢我的人
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 12:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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