OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 275|回复: 1

DHT11驱动Check函数的问题

[复制链接]

  离线 

2

主题

4

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2018-2-9
在线时间
3 小时
发表于 2018-2-13 23:32:46 | 显示全部楼层 |阅读模式
1金钱
u8 DHT11_Check(void)     
{   
u8 retry=0;
DHT11_IO_IN();//SET INPUT  
    while (DHT11_DQ_IN&&retry<100)
{
  retry++;
  delay_us(1);
};  
if(retry>=100)return 1;    //这里不应该是if(retry>=80)retrurn 1;吗???
else retry=0;
    while (!DHT11_DQ_IN&&retry<100)
{
  retry++;
  delay_us(1);
};
if(retry>=100)return 1;        //这里不应该是if(retry>=80)retrurn 1;吗???
return 0;
}

DHT11要拉低40到50us,然后拉高40到50us。为什么例程测的是100us呢???

回复

使用道具 举报

  离线 

10

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
200
金钱
200
注册时间
2017-9-10
在线时间
51 小时
发表于 2018-2-14 10:37:31 | 显示全部楼层
我不知道是不是我的模块问题,好像按照这种检测方式,如果你按复位键,你会发现有时候即使你插上了模块,也会检测到模块不存在,可是为什么之后又会存在,是因为函数放在了while循环里,我觉的这个检测函数是有问题的。但是我不清楚是不是我的模块有问题,要开学后去学校换个模块试试。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则




关闭

报名原子哥新品发布会&粉丝见面会上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-10-22 03:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表
/* */