社区导航

 

搜索
查看: 1373|回复: 5

[求助] 任务切换问题

[复制链接]

8

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2015-8-5 16:26 | 显示全部楼层 |阅读模式
本帖最后由 GLG110 于 2015-8-5 16:40 编辑

我刚学ucos 还不懂ucos编程技巧,请前辈们帮我看看下面问题,谢谢!

我有两个任务,时间任务和显示任务,例如当前时间为10:59,显示任务刚执行完显示小时,正要显示分钟时此时被优先级更高的“时间任务“抢占了,分钟进位变成11:00;时间任务执行接收后回到显示任务中显示分钟,此时岂不是显示成了额”10:00“ 显示错了,请问如果这类问题该如何预防啊?

回复

使用道具 举报

134

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-8-6 00:22 | 显示全部楼层
如果你的时间任务执行完10:59后显示任务一直没有得到运行,碰巧得到运行时时间任务抢占了它,就会出现问题
但你不用担心,OS没有这么低的调度率.
利用互斥量与缓冲机制可完美解决
如:时间任务更新时间变量A(互斥的),显示任务每次都把变量A赋值给变量B(同一个互斥量),然后慢慢示变量B

回复

使用道具 举报

8

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2015-8-6 10:26 | 显示全部楼层
samos2011 发表于 2015-8-6 00:22
如果你的时间任务执行完10:59后显示任务一直没有得到运行,碰巧得到运行时时间任务抢占了它,就会出现问题
...

谢谢您的指点,我明白你的意思,对我初学者来说不过感觉UCOS在应用全局变量时很不顺手……

回复

使用道具 举报

134

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-8-6 10:54 | 显示全部楼层
非常了解你初学者的困惑,都是过来人,但如果你了解了设计模式的单一职责原则,你就不会困惑了,你设计一个任务,这个任务应该是要完成一件事,你所定义的资源都是为实现这件事而定义的,也可以理解为为你这个任务而定义的,不要把别的不相干的任务关联进来,要做到低耦合,高内聚.一个任务能完成的事情不要用两个任务做

回复

使用道具 举报

134

TA的帖子

1

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-8-6 10:55 | 显示全部楼层
推荐你使用这个OS,你会发现,原来OS也可以这么简单
http://bbs.eeworld.com.cn/thread-470626-1-1.html

回复

使用道具 举报

8

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2015-8-7 09:14 | 显示全部楼层
谢谢你 !  不过我刚学UCOS再学其他的好像没什么时间  我再啃啃吧 !

回复

使用道具 举报

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

关闭

站长推荐上一条 1/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-5-30 04:41 , Processed in 0.214074 second(s), 27 queries , Gzip On, MemCache On.

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