OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3943|回复: 7

正点原子DTH11改引脚后Check一直返回1

[复制链接]

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2021-7-17
在线时间
19 小时
发表于 2022-3-21 10:43:49 | 显示全部楼层 |阅读模式
1金钱
.h文件如下:#define DHT11_IO_IN()  {GPIOA->CRH&=0XFFFFFFF0;GPIOA->CRH|=8<<0;}
#define DHT11_IO_OUT() {GPIOA->CRH&=0XFFFFFFF0;GPIOA->CRH|=3<<0;}
                                                                                  
#define        DHT11_DQ_OUT PAout(8)
#define        DHT11_DQ_IN  PAin(8)

u8 DHT11_Init(void);
u8 DHT11_Read_Data(u8 *temp,u8 *humi);
u8 DHT11_Read_Byte(void);
u8 DHT11_Read_Bit(void);
u8 DHT11_Check(void);
void DHT11_Rst(void);


.c文件如下:
void DHT11_Rst(void)          
{                 
        DHT11_IO_OUT();        
    DHT11_DQ_OUT=0;        
    delay_ms(20);           
    DHT11_DQ_OUT=1;        
        delay_us(30);            
}

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;
        else retry=0;
    while (!DHT11_DQ_IN&&retry<100)
        {
                retry++;
                delay_us(1);
        };
        if(retry>=100)return 1;            
        return 0;
}

u8 DHT11_Read_Bit(void)                          
{
        u8 retry=0;
        while(DHT11_DQ_IN&&retry<100)
        {
                retry++;
                delay_us(1);
        }
        retry=0;
        while(!DHT11_DQ_IN&&retry<100)
        {
                retry++;
                delay_us(1);
        }
        delay_us(40);
        if(DHT11_DQ_IN)return 1;
        else return 0;                  
}

u8 DHT11_Read_Byte(void)   
{        
    u8 i,dat;
    dat=0;
        for (i=0;i<8;i++)
        {
                   dat<<=1;
            dat|=DHT11_Read_Bit();
    }                                                    
    return dat;
}

u8 DHT11_Read_Data(u8 *temp,u8 *humi)   
{        
        u8 buf[5];
        u8 i;
        DHT11_Rst();
        if(DHT11_Check()==0)
        {
                for(i=0;i<5;i++)
                {
                        buf[i]=DHT11_Read_Byte();
                }
                if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
                {
                        *humi=buf[0];
                        *temp=buf[2];
                }
        }else return 1;
        return 0;            
}
         
u8 DHT11_Init(void)
{         
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);       
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                                 
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStructure);                               
        GPIO_SetBits(GPIOA,GPIO_Pin_8);                                       
                            
        DHT11_Rst();
        return DHT11_Check();
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2021-7-17
在线时间
19 小时
 楼主| 发表于 2022-3-21 10:44:58 | 显示全部楼层
在DHT11_Check第一个循环里出来
回复

使用道具 举报

8

主题

163

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2021-12-14
在线时间
70 小时
发表于 2022-3-21 11:33:34 | 显示全部楼层
先试试例程的引脚看看传感器是否正常  正常的话再检查一下接线是否有接反
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2021-7-17
在线时间
19 小时
 楼主| 发表于 2022-3-23 11:57:47 | 显示全部楼层
F4PigLet 发表于 2022-3-21 11:33
先试试例程的引脚看看传感器是否正常  正常的话再检查一下接线是否有接反

例程可以用,线只接三根吧?VCC,GND,DATA,没接错啊
回复

使用道具 举报

8

主题

163

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
448
金钱
448
注册时间
2021-12-14
在线时间
70 小时
发表于 2022-3-23 12:07:53 | 显示全部楼层
跑马灯 发表于 2022-3-23 11:57
例程可以用,线只接三根吧?VCC,GND,DATA,没接错啊

试试将GND跟NC都接地看看    原理图上这两个引脚都接地了
回复

使用道具 举报

3

主题

177

帖子

0

精华

高级会员

Rank: 4

积分
774
金钱
774
注册时间
2019-11-27
在线时间
87 小时
发表于 2022-3-24 08:50:27 | 显示全部楼层
去看一下宏定义有没有修改
个人CSDN 首页https://blog.csdn.net/qq_41930631
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2021-7-17
在线时间
19 小时
 楼主| 发表于 2022-3-28 08:48:18 | 显示全部楼层
F4PigLet 发表于 2022-3-23 12:07
试试将GND跟NC都接地看看    原理图上这两个引脚都接地了

上拉电阻的阻值有影响吗?我看资料说是要接5.1K的,我买的模块接的是2K的。
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2021-7-17
在线时间
19 小时
 楼主| 发表于 2022-3-28 08:48:44 | 显示全部楼层
Cheng0717 发表于 2022-3-24 08:50
去看一下宏定义有没有修改

哪里的宏定义?PA的还是?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 21:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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