请问我在stm32上移植了ucos,现在需要使用到DS18B20采集温度

DS18B20的操作时序要使用到延时,我是用ucos的延时函数还是自己循环写一个延时?现在有个问题:假如用ucos的延时函数,如果出现更高优先级的任务,那么会将读DS18... DS18B20的操作时序要使用到延时,我是用ucos的延时函数还是自己循环写一个延时?
现在有个问题:假如用ucos的延时函数,如果出现更高优先级的任务,那么会将读DS18B20这个任务挂起,会破坏DS18B20的时序操作,读不出来温度。这个延时我应该怎么处理?
展开
 我来答
610095871
2012-08-14 · TA获得超过455个赞
知道小有建树答主
回答量:380
采纳率:100%
帮助的人:270万
展开全部
第一 读取18B20的时候关闭任务切换,不进行任务调度
第二 通过任务通讯 互斥量或者邮箱 让其他任务挂起
第三 关闭中断
第四 将操作18b20的任务优先级设置高点或者操作时提升其任务优先级
延时的话可以用ucos的延时函数 也可以自己写,不过还是用ucos的好
追问
谢谢你的回答
请问这是四种方法吗???
如果是,觉得第一种方法好点,至于第四种,感觉没用,又回到我原来的问题上了,提升18B20的优先级,哪怕是最高的优先级,只要使用ucos的延时,那么会去寻找第二高的优先级,并且执行,还是会破坏延时。
另外一个问题,ucos使用的时钟节拍是由STM32内部的时钟滴答定时器产生的,我设置的是1ms中断一次,是不是每次一中断就会去寻找优先级最高的任务,并且执行呢?
追答
ucos每次都会让处于就绪态的最高优先级任务运行,用ucos的延时, 18b20这个任务被挂起,并且记录延时节拍数,节拍数在系统时钟中断中不停的减,一旦检测到延迟节拍数为0就会查看是不是需要进行任务调度,18B20的任务得以重新运行。
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
chenfengjie90
2012-08-14 · TA获得超过372个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:225万
展开全部
DS18B20驱动程序内部还是用自己写的延时!任务之间的延时用UCOS的延时函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式