uCOS中慎用OSSchedLock()

[复制链接]
6355|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 | 显示全部楼层
问题找到了就好   呵呵  这么快就解决问题了  不错
Qsnow500 发表于 2015-8-15 12:13 | 显示全部楼层
关掉任务调度 ----->延时函数------>打开关掉任务调度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

29

主题

146

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部