分享我的UCOSIII移植成功DS18B20

2019-08-13 21:46发布

现在大家用DS18B20都是用裸机跑的,但是同样的程序放到UCOSIII里面就跑不起来。为什么呢?ucos ii是怎么实现多任务运行的?(知乎)这是我写的答案,写的是UCOSIII的。正好最近要用到,然后我在论坛找了一下还没有,所以我就花了点时间,把他移植到我的UCOSIII里面了。主要是延时的问题,这时候我们要用到逻辑分析仪去抓时序。我们要写一个软件延时,因为如果我们用滴答定时器,很有可能会引起任务调度,从而打断时序。DS18B20对时序的要求还是比较高的。下面是我用逻辑分析仪调试出来的延时:
微信截图_20170422120852.png
一个延时2微秒,然后替换DS18B20里面的延时,这是串口打印输出:
微信截图_20170422121321.png
STM32F103C8T6Model-UCOSIII.zip (657.86 KB, 下载次数: 694) 2017-4-22 13:50 上传 点击文件名下载附件

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
操作系统
1楼-- · 2019-08-13 23:31
会用逻辑分析了.应该是个高手.程序写得不错.可OS的任务调试等高级可能没有发挥出来.等待DS18B20转换完成 时,最好挂起任务一段时间.约为750MS.
wszdxmh
2楼-- · 2019-08-14 04:57
 精彩回答 2  元偷偷看……
操作系统
3楼-- · 2019-08-14 07:13
wszdxmh 发表于 2017-4-22 14:43
我把自己的很多任务和程序都删掉了,只上传了一个跑温度的。另外,如果掉用了挂起函数会自动解挂吗?还是 ...

哦,自动解挂,这词用得好.是的.调用系统延时函数.就可以指定挂起的时间,时间到了自动解挂.
wszdxmh
4楼-- · 2019-08-14 09:11
刚才我又在其他板子上跑了一下,发现跑不起来。延时又有点变化。我又用逻辑分析仪调了一下,所以用不了的话可以调一下我的延时Delay_us()里面那个参数,我改成了12就行了。不同的板子晶振有一定的误差
皮蛋瘦肉粥
5楼-- · 2019-08-14 15:08
你好,我用的也是F103C8T6,DS18B20串口输出一直是FF,不知道怎么回事,用的是原子哥MINI板的程序,您那儿有C8T6的DS18B20程序么,希望能帮我解决一下,谢谢,研究好几天了
皮蛋瘦肉粥
6楼-- · 2019-08-14 19:21

你好,我用的也是F103C8T6,DS18B20串口输出一直是FF,不知道怎么回事,用的是原子哥MINI板的程序,您那儿有C8T6的DS18B20程序么,希望能帮我解决一下,谢谢,研究好几天了

一周热门 更多>