完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
我是UCOS初学者,以前也没有学过任何RTOS,望大神说的仔细些。
我所理解的UCOS任务调度都是在延时函数中实现的, 假设我定义了三个函数:1-start_task ; 2-task1; 3-task2。 在任务1、2的while语句里面都有自己的“具体任务语句”(比如让led翻转)以及一个HMSM延时函数(1s延时),任务1在执行完“具体任务语句”后进入自己的HMSM,此时发生任务切换进行任务2,任务2执行完自己的“具体任务语句”后也进入自己的HMSM中。 问题是: 1、这两个HMSM的一秒延时究竟是怎么协调的,最终实现的一秒延时是两个延时同时进行的么? 2、还有在进行延时函数的时候是不占用CPU使用权的么?为什么可以在延时期间去干别的事?或者是直接去执行了其他任务,那延时又是怎么精确延时的呢? |
|
相关推荐
3个回答
|
|
|
你要了解OS有原理才行。
简单说,OS有个心跳,比如每5ms执行 1次。 那么每秒钟OS至少可以进行200次任务切换。 5ms中断就是所谓的系统心跳。 比如你任务要延时503ms,那么可以分成5*100+3,500ms使用系统心跳实现延时(这个处理就是OS的精髓了)、这个500ms延时就由OS托管,OS会给任务做标记,当开始延时时,任务进入挂起状态,然后等到100次调度完成,OS就会再启动任务,完成500ms延时,然后剩下的3ms,就死等了。 所以延时最好是系统心跳的整数倍,这就不会浪费CPU。 |
|
|
|
|
|
任务1、2指的是task1和task2,有点歧义,抱歉
|
|
|
|
|
|
谢谢原子哥
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1018 浏览 1 评论
1849 浏览 0 评论
1830 浏览 1 评论
3254 浏览 5 评论
3581 浏览 9 评论
1021浏览 1评论
1850浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1360浏览 1评论
1852浏览 0评论
1178浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 03:00 , Processed in 3.479765 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4240