标题:
DHT11的STM32驱动程序
[打印本页]
作者:
1804181935
时间:
2020-5-6 11:09
标题:
DHT11的STM32驱动程序
#include "../DRIVER/inc/dht11.h"
uint16_t DHT11_Buffer[5];
/**************************************
* 函 数 : 初始化DHT11
* 参 数 :无
* 返回值 :无
***************************************/
void DHT11_InitConfing(void)
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE,ENABLE );
DHT11_O();
DHT11_H;
}
/**************************************
* 函 数 : DHT11配置为输出
* 参 数 :无
* 返回值 :无
***************************************/
void DHT11_O(void){
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_Init( GPIOE ,&GPIO_InitStruct);
}
/**************************************
* 函 数 : DHT11配置为输入
* 参 数 :无
* 返回值 :无
***************************************/
void DHT11_I(void){
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_Init( GPIOE ,&GPIO_InitStruct);
}
/**************************************
* 函 数 : DHT11读取电平
* 参 数 :无
* 返回值 :高电平 1、 低电平 0
***************************************/
uint8_t DHT11_R(void){
return GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6);
}
/**************************************
* 函 数 : DHT11读取数据
* 参 数 :无
* 返回值 :高电平 1、 低电平 0
***************************************/
uint8_t DHT11_ReadBit(void){
while( DHT11_R() == RESET);
Delay_us(40);
if( DHT11_R() == SET )
{
while( DHT11_R() == SET);
return 1;
}else
return 0;
}
/**************************************
* 函 数 : DHT11读取字节
* 参 数 :无
* 返回值 :字节
***************************************/
uint8_t DHT11_ReadByte(void){
uint8_t i,data = 0;
for( i = 0 ; i < 8 ; i++ ){
data <<= 1;
data |= DHT11_ReadBit();
}
return data;
}
/**************************************
* 函 数 : DHT11读取温湿度
* 参 数 :无
* 返回值 :SUCESS 1 ,FAIL = 0
***************************************/
uint16_t DHT11_ReadData(void)
{
uint8_t i;
DHT11_O();
DHT11_L;
Delay_us(19000);
DHT11_H;
Delay_us(30);
DHT11_I();
//DHT11_R;
if( DHT11_R() == RESET){
while( DHT11_R() == RESET);
while( DHT11_R() == SET );
for( i = 0; i < 5 ;i++ )
DHT11_Buffer[i] = DHT11_ReadByte();
DHT11_O();
DHT11_H;
if( (DHT11_Buffer[0] + DHT11_Buffer[1] + DHT11_Buffer[2] + DHT11_Buffer[3]) == DHT11_Buffer[4] )
return 1;
else
return 0;
}else
return 0;
}
复制代码
STM32_DHT11 (2).7z
2020-5-6 11:09 上传
点击文件名下载附件
下载积分: 黑币 -5
177.37 KB, 下载次数: 29, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1