OpenEdv-开源电子网

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

ucosiii任务间信息的同步还可以使用全局变量吗?

[复制链接]

22

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2015-5-4
在线时间
34 小时
发表于 2016-5-17 11:56:12 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 shblh 于 2016-5-17 12:01 编辑

请问,如果我定义了一个全局变量,这个全局变量还可以应用于多个任务吗?比如:我定义了全局变量u8 AD_FINISH=0;
然后我再任务1中某种情况下我置AD_FINISH=1;
然后在任务2中查询AD_FINISH的值,对于0和1,执行不同的操作,这样子,可以吗?

最佳答案

查看完整内容[请看2#楼]

看你如何一直查询了,如果像空闲任务那样一直不交出CPU的使用权,那么会饿死空闲任务。如果每隔10ms查询一次,那么实时性就不强了(因为必须睡眠10ms唤醒后才能查询)。如果想要实时性强一点,建议还是用信号量,任务2一直在等待信号量但不会占用CPU,任务1只要给出信号量就会立刻唤醒任务2
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
11924
金钱
11924
注册时间
2015-11-5
在线时间
2086 小时
发表于 2016-5-17 11:56:13 | 显示全部楼层
看你如何一直查询了,如果像空闲任务那样一直不交出CPU的使用权,那么会饿死空闲任务。如果每隔10ms查询一次,那么实时性就不强了(因为必须睡眠10ms唤醒后才能查询)。如果想要实时性强一点,建议还是用信号量,任务2一直在等待信号量但不会占用CPU,任务1只要给出信号量就会立刻唤醒任务2
回复

使用道具 举报

22

主题

104

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2015-5-4
在线时间
34 小时
 楼主| 发表于 2016-5-18 13:44:26 | 显示全部楼层
FreeRTOS 发表于 2016-5-17 12:30
看你如何一直查询了,如果像空闲任务那样一直不交出CPU的使用权,那么会饿死空闲任务。如果每隔10ms查询一 ...

因为一旦使用信号量,这个任务在没有得到信号量的时候就挂起了,这样任务2中有些每次必须执行的语句就不能执行了,这样是不允许的,所以我才想说使用全局变量,可能会有点实时性不强,但如果把时钟节拍改到1ms,这样实时性应该也差不多,你觉得这样可否???
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
11924
金钱
11924
注册时间
2015-11-5
在线时间
2086 小时
发表于 2016-5-18 15:19:40 | 显示全部楼层
shblh 发表于 2016-5-18 13:44
因为一旦使用信号量,这个任务在没有得到信号量的时候就挂起了,这样任务2中有些每次必须执行的语句就不 ...

信号量的获取并不一定要等待,你完全可以设置等待时间为0,不过这个跟你用全局变量的效果一样,所以一般都会设一个超时的等待例如1ms,2ms,5ms。。。只要在超时等待期间接收到其他任务发送的信号量便会立刻唤醒,这样既保证了任务不会一直挂起也保证了任务的实时性
拿来长岛冰茶换我半晚安睡
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 19:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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