DHT10 温湿度读写例程
void SDA_IN(void);
void SDA_OUT(void);
//IO操作函数 以下两种检测输入方式一样的 在检测前 必须先配置输入口为浮点输入
#define DHT10_SDA_IN() GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6) //数据端口 PB6
#define DHT10_SCL_HIGH() GPIO_SetBits(GPIOB, GPIO_Pin_7)
#define DHT10_SCL_LOW() GPIO_ResetBits(GPIOB, GPIO_Pin_7)
#define DHT10_SDA_HIGH() GPIO_SetBits(GPIOB, GPIO_Pin_6)
#define DHT10_SDA_LOW() GPIO_ResetBits(GPIOB, GPIO_Pin_6)
#define DHT10_Address 0x38
/*******************************************************************************
** 函数名称: I2C_Configuration
** 功能描述:
** 函数说明:I2C初始化
** 作 者:
** 日 期:
*******************************************************************************/
void I2C_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//申明结构体用
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB时钟
/* Configure as Output push-pull GPIO_Pin_6 = SDA GPIO_Pin_7 = SCL */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
DHT10_SDA_HIGH();//20ms SCL为高电平 空闲状态
DHT10_SCL_HIGH();
}
/*******************************************************************************
** 函数名称: SDA_IN
** 功能描述:
** 函数说明:SDA IN 配置
** 作 者:
** 日 期:
*******************************************************************************/
void SDA_IN(void)
{
GPIO_InitTypeDef GPIO_InitStructure;//申明结构体用
// RCC_APB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/*******************************************************************************
** 函数名称: SDA_OUT
** 功能描述:
** 函数说明:SDA OUT 配置
** 作 者:
** 日 期:
*******************************************************************************/
void SDA_OUT(void)
{
GPIO_InitTypeDef GPI