打印

uCOS中慎用OSSchedLock()

[复制链接]
5839|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
quyifei|  楼主 | 2013-5-14 21:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 quyifei 于 2013-5-14 21:57 编辑

我在程序中使用OSSchedLock(),希望关掉任务调度,想使线程获得全部的ECU的使用权, 结果发现延时函数OSTimeDly()不能用了,例如执行OSTimeDly(100); 实际根本就没有延时100ms。

调试了一个晚上,用示波器观察了半天才发现这个问题。

所以感觉OSShedLock()这个函数尽量慎用。把OSShedLock()去掉程序就调通了,但不清楚到底是为什么? 请高人指点!
沙发
李富贵| | 2013-5-14 22:56 | 只看该作者
ucos就两个调度函数OSSched和OSIntExit,前者是OSTimeDly调用的,后者是中断处理函数调用的,你关了任务调度当然不能工作了。

使用特权

评论回复
板凳
自然的天逸| | 2013-5-15 19:48 | 只看该作者
锁住调度器 OSTimeDly 这个还可以用就怪了 你看源代码就知道了

使用特权

评论回复
地板
hawksabre| | 2013-5-15 21:30 | 只看该作者
问题找到了就好   呵呵  这么快就解决问题了  不错

使用特权

评论回复
5
Qsnow500| | 2015-8-15 12:13 | 只看该作者
关掉任务调度 ----->延时函数------>打开关掉任务调度

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:最小STM32开发板-攸米板淘宝: yifei-stm.taobao.com 博客: blog.sina.com.cn/yifeistm

29

主题

146

帖子

1

粉丝