void DHT11_Read_Data(uint8_t *humidity, uint8_t *temperature) { uint8_t i, data[5], checksum; DHT11_Send_Low(); Delay_us(500); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = DHT11_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(DHT11_PORT, &GPIO_InitStructure); if(!GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN)) { while(!GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN)); // ??DHT11?? while(GPIO_ReadInputDataBit(DHT11_PORT, DHT11_PIN)); for(i = 0; i < 5; i++) { data[i] = DHT11_Read_Byte(); // ??40??? } checksum = data[0] + data[1] + data[2] + data[3]; // ????? if(checksum == data[4]) { *humidity = data[0]; *temperature = data[2]; } } GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // ??GPIO???? GPIO_Init(DHT11_PORT, &GPIO_InitStructure); GPIO_SetBits(DHT11_PORT, DHT11_PIN); }
时间: 2023-06-20 16:04:37 浏览: 151
arduino 读取温湿度dht11
这是一个用于读取 DHT11 温湿度传感器数据的函数。具体来说,它会向传感器发送一个低电平信号,然后等待一段时间后将 GPIO 端口的模式设置为输入模式。接着,它会等待传感器发回一个高电平信号,然后再等待一个低电平信号。这个过程可以确保传感器已经准备好将数据发送出来。接着,函数会调用 DHT11_Read_Byte 函数读取五个字节的数据,其中前四个字节是温湿度值,第五个字节是校验和。如果校验和正确,函数会将温度和湿度值分别存储在传入函数的指针变量中。最后,函数会将 GPIO 端口的模式设置为输出模式,并将引脚拉高。
阅读全文