搜索
bottom↓
回复: 10

新手!!uCOS-II的几个问题,请大家帮忙看看,关于如何去分配任务的优先级,如何编写自己的中

[复制链接]

出0入0汤圆

发表于 2012-3-9 10:40:40 | 显示全部楼层 |阅读模式
最近在学习uCOS-II,用的是人家已经移植好的程序。现在,想自己练习一下在uCOS-II上编程,发现有几个问题,
不知道该如何处理比较好呢?

1、如何分配任务的优先级,有看到说是处理越紧急的事的任务的优先级就要越要,可是当自己实际在编程的时
   候,发现这是一个不小的问题,比如我现在有LCD显示,CPU湿度采集,环境湿度采集,串口接收,发送,按
   键检测,等等,那么我该如何去分配这些任务的合理呢?

2、如何编写自己的中断服务程序呢?如果我的中断程序不交给uCOS管理可不可以呢?这样会不会带来什么隐患
   呢?如果我的中断程序需要让uCOS来管理,那应该怎么写呢,是不是要和系统时钟中断程序那样写呢?

3、在我自己的子程序中,如果需要用到延时,那我可不可以使用uCOS提供的延时函数呢,比如我的DS18B20采集
   温度,中间我至少需要延时750ms,那个延时我可以使用 uCOS的OSTimeDly( 750 )吗?"假设系统时钟为1K"

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

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2012-3-9 11:08:35 | 显示全部楼层
1、区分任务之间的前后台关系,例如“屏幕显示”是基于“CPU湿度采集,环境湿度采集”之后的,所以优先级比后者低。另外驱动最好不要用任务来做,用定时器。

2、中断时候干嘛是你自己设定,但一定记得关掉内核调度

3、可以,不使用OS的延迟话你用OS干啥...

出0入0汤圆

发表于 2012-3-9 12:16:16 | 显示全部楼层
这些问题你可以找一本书《基于嵌入式实时操作系统的程序设计技术》看看,是周慈航写的。

个人觉得写得还不错。

出0入0汤圆

发表于 2012-3-9 12:34:45 | 显示全部楼层
回复【2楼】xinyou
这些问题你可以找一本书《基于嵌入式实时操作系统的程序设计技术》看看,是周慈航写的。
个人觉得写得还不错。
-----------------------------------------------------------------------

顶,我也看过一下,那本书能解决你的问题

出0入0汤圆

 楼主| 发表于 2012-3-9 15:05:44 | 显示全部楼层
回复【1楼】MadCat  
-----------------------------------------------------------------------

谢谢,给我提供了一个思路,习惯了前后台程序,还真的不容易转到uCOS下,

另外, “另外驱动最好不要用任务来做,用定时器。 ”,这个要怎么理解,

能举个例子说明下吗?

出0入0汤圆

 楼主| 发表于 2012-3-9 15:06:11 | 显示全部楼层
回复【2楼】xinyou  
-----------------------------------------------------------------------
谢谢

我已经下载了这本书的电子版了

出0入0汤圆

发表于 2012-3-9 23:12:23 | 显示全部楼层
1:一般来说,对于控制系统,将控制量的刷新任务设为最高优先级,数据采集次高,显示最低;当然,要具体情况具体分析,如果对用户的通知最重要,那么显示应高设为高优先级,灵活性较高,不太好总结;
2:在UCOS下,ISR很容易,格式如下。中断无所谓用UCOS管理不,在没有更高优先级的情况下,中断条件一发生,就进入中断了,UCOS并不参与这个过程,问题在于,中断服务程序运行过程中,UCOS参与这个过程吗?那就要看时钟节拍中断与用户中断优先级的高低了,还有就是ISR结束后,中断返回哪里的问题,可以看这个帖子
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5229341&bbs_page_no=1&search_mode=4&search_text=hellochen&bbs_id=9999
     ISR()
     {
       OSIntEnter();
       用户代码;
       OSIntExit();
     }
    一般来说,时钟节拍中断的优先级设为最高的,以保证任务实时性,发挥操作系统的优势,但这样用户中断的响应会受到影响,不过时间是确定的;这样在isr中UCOS的时钟节拍会继续脉动,以便将高优先级的任务至于就绪状态,ISR退出后就不是继续原来的执行了,而是将更高优先级的就绪任务切换至运行。

    如果你讲时钟节拍中断优先级设置成了最低,那么你的用户ISR就与没有操作系统无异了,中断实时性保证了,任务实时性丧失了,操作系统的优势也丧失了,不推荐!
3:UCOS提供的时间管理函数OSTimeDly  HMSM等并不是通常意义上的延时,调用这些函数后,系统会取消当前任务的就绪态,并进行任务调度。可以使用此函数做延时用,但是要注意:如果你实际OSTimeDly(100) 延时将会>=100,因为任务切换后,有可能更高优先级的至于就绪态,那么将先执行高优先级任务,再回来执行原任务。如果对时序要求很高的话,不推荐用系统延时,高优先级的任务执行的时间不确定的话,什么时候返回,说不清呢!

出0入0汤圆

发表于 2012-3-23 20:45:13 | 显示全部楼层
支持楼上的  说的很清楚     

出0入0汤圆

发表于 2012-3-27 10:07:23 | 显示全部楼层
理解了一点,对uC的整体框架有了认识,细节还不知道

出0入0汤圆

发表于 2012-3-27 10:32:30 | 显示全部楼层
我觉得中断里做优先级切换比较好,事件处理还是放在外面比较好!

出0入0汤圆

发表于 2014-1-3 10:35:49 | 显示全部楼层
MARK 。。。。。。。。。。。。。。。。。。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-2 23:15

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

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