#ifndef __DHT11_H__
#define __DHT11_H__

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

/* DHT11的设置 */
#define DHT11_GPIO_CLK                                        RCC_APB2Periph_GPIOB
#define DHT11_GPIO_PORT                                       GPIOB
#define DHT11_GPIO_PIN                                        GPIO_Pin_1

/* 输出状态定义 */
#define DHT11_MODE_OUT                                        1
#define DHT11_MODE_IN                                         0
/* 控制DHT11引脚输出高低电平 */
#define DHT11_Low                                             GPIO_ResetBits(DHT11_GPIO_PORT, DHT11_GPIO_PIN)
#define DHT11_High                                            GPIO_SetBits(DHT11_GPIO_PORT, DHT11_GPIO_PIN)

typedef struct {
    uint8_t ucTemp;
    uint8_t ucHumi;
} DHT11Data_t;

void vDht11Mode(uint8_t ucMode);                           // DHT11引脚输出模式控制
void vDht11Rst(void);                                      // 复位DHT11
uint8_t vDht11Init(void);                                  // 初始化DHT11
uint8_t vDht11Check(void);                                 // 检测DHT11
uint8_t vDht11ReadBit(void);                               // 读取一位的数据
uint8_t vDht11ReadByte(void);                              // 读取一个字节的数据
uint8_t vDht11ReadData(uint8_t *pucTemp, uint8_t *pucHumi); // 读取温湿度数据

#endif
