搜索
bottom↓
回复: 1

求高手讨论ucos的任务跟软件定时器功能上的的区别

[复制链接]

出0入10汤圆

发表于 2014-8-12 09:51:30 | 显示全部楼层 |阅读模式
本帖最后由 10xjzheng 于 2014-8-12 09:56 编辑

大家早上好,最近在做一个项目,用到ucos,用着用着就有点困惑了。
ucos任务和软件定时器这两者虽然在其他方面不同,但都是以一定的频率执行程序,这个是一样的吧,在程序上软件定时器要比任务调度要容易,不用考虑堆栈,只要建一个主任务随随便便就可以建很多个软件定时器。
后来在一位的高手点拨下,明白了一些。高手是这样子说的:
1.所有的软件定时所执行的函数加起来相当于一个任务(这句话我的理解是说任务程序会自己调度,但是定时器就要我们自己调度)
2.看来你对OS的初衷不了解软件定时器中各个函数不能并行执行,任务可以,这就是本质区别,也是OS想要的,比喻你听歌同时可以一边浏览网页,同时进行,就是因为有OS才并行,不然要把歌听完,才能浏览网页。
于是我就总结,在一些小的调度起来很容易的程序,就可以用定时器,但是大型,调度难的就交给任务吧。堆栈的麻烦也带来了调度的方便,两者相辅相成,相生相克。
各位高手有兴趣可以多讨论下,愿闻其详。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入10汤圆

 楼主| 发表于 2014-8-12 09:58:18 | 显示全部楼层
我还找到了类似问题
http://zhidao.baidu.com/link?url ... ns0UFYO-00Lm9EXoQX_
问:
比如说用OSTimeDlyHMSM我可以实现任务每100ms执行一次,那么用软件定时器有什么用?就是os_tmr.c中的函数有什么用?我没发现OSTimeDly或者OSTimeDlyHMSM调用os_tmr.c内的相关函数啊,那么这里面的函数是用来干嘛的?
OSTimeDly和OSTimeDlyHMSM是利用系统定时器来实现的,这跟os_tmr.c有什么关系?
答:
1、你调用OSTimeDly或者OSTimeDlyHMSM,意味着该任务CPU使用权会被没收,然而你开启一个定时器之后,该任务还可以使用CPU。
2、举例子:如下情景,可以使用软件定时器作超时处理,设备A管理设备B、C、E,设备A向设备BCE设备发送某一消息,如果在T时间内,设备BCE没有回应,设备A将重起并初始化BCE;那么可以在一个任务中,依次向BCE发送消息,并且启动软件动定时器TMRa,TMRb,TMRc,定时器时间到时调用各自的重起并初始化函数;另一方面,如果接收到BCE的消息则停止定时器TMRa,TMRb,TMRc。
3、然而如果用OSTimeDly或者OSTimeDlyHMSM处理上面的场景,可能要多开几个任务管理BCE并增加信号量通知OSTimeDly或者OSTimeDlyHMSM之后,到底是“重起并初始化BCE”还是什么都不做。
4、软件定时器和延时都是基于“系统的节拍”来计时/定时的,虽然软件定时器是在一个高优先级的任务中管理,这个任务也是由“系统节拍中断“中向其发送信号量,因此还是基于“系统的节拍”。
5、没必要去对它们的区别做出一个定义,关键还是去理解它们的应用场合,它们都能解决什么问题。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 02:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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