调试的时候发现第三个元素不为0
根据数据手册,第三个元素应该是温度的小数部分,应该是0,但是为什么能读出数据呢?看不出来哪里有问题啊,各个地方都配置了
程序比较简单,就贴主体了
[mw_shl_code=c,true]void DHT_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(DHT_CLK,ENABLE);
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_InitStructure.GPIO_Pin=DHT_PIN;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(DHT_PORT, &GPIO_InitStructure);
}
void DHT_Read(u8 *r)
{
int i=0,j=0;
u8 dht[5]={0};
delay_ms(1000);
DHT_L();
delay_ms(20);
DHT_H();
delay_us(40);
if(DHT_READ()==0)
{
while(DHT_READ()==0);
while(DHT_READ()==1);
for(i=0;i<5;i++)
{
for(j=0;j<8;j++)
{
while(DHT_READ()==0);
delay_us(40);
dht
<<=1;
if(DHT_READ()==0)
{
dht+=0;
}
else
{
dht+=1;
while(DHT_READ()==1);
}
}
}
}
for(i=0;i<5;i++)
{
*r++=dht;
}
r++;//用来放置断点
}[/mw_shl_code]
数据手册说没小数,厂家不能自己搞错啊,而且只有温度有,湿度却没有。。。
你得去看最新版本的手册,不一定手册是最新的
一周热门 更多>