DHT11在 裸机下正常,但是在UCOS-II下就读出错误的数据

2019-07-21 05:56发布

    我用DHT11在裸机下读取的温湿度是正确的,但是把程序放到UCOS-II下,却发现读取到的数据一看就知道是错误的,是什么情况啊?
PS:已在论坛搜索过,试过在读取数据之前添加OSSchedLock();但是还是不行啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
exv
1楼-- · 2019-07-21 11:41
楼主到这个帖子看下: 
http://www.openedv.com/posts/list/0/22990.htm 

“ 还有,如果某个任务执行时间出现抖动,整个系统和其它任务都要遭殃了。任务之间的干涉会非常严重。”
ucos很难处理好这个问题,要解决的话最好自己写RTOS。
jackailson
2楼-- · 2019-07-21 12:48
我用UCOS的时间不是很长, 没人知道这是怎么回事么?
八度空间
3楼-- · 2019-07-21 15:31
 精彩回答 2  元偷偷看……
jackailson
4楼-- · 2019-07-21 18:07
回复【3楼】八度空间:
---------------------------------
试了,不行,不知道有没有人遇到过这个问题啊。。。
exv
5楼-- · 2019-07-21 23:26
回复【4楼】jackailson:
---------------------------------
认同二楼看法,DS18B20上见过类似情况,

OS_ENTER_CRITICAL();
XXXXXXXXXXXX
OS_EXIT_CRITICAL();

如上方法可解决。

你这情况有些蹊跷了,如果问题不在中断/delay上,也许是因为死锁。
不过死锁一般出现在复杂的系统上,DHT11发生死锁也不应该啊。
正点原子
6楼-- · 2019-07-21 23:33
参考DS18B20的写法.
楼主如果用我们的delay_us,是可以直接在os下面使用的.

一周热门 更多>