標(biāo)題:
DHT11的STM32驅(qū)動程序
[打印本頁]
作者:
1804181935
時間:
2020-5-6 11:09
標(biāo)題:
DHT11的STM32驅(qū)動程序
#include "../DRIVER/inc/dht11.h"
uint16_t DHT11_Buffer[5];
/**************************************
* 函 數(shù) : 初始化DHT11
* 參 數(shù) :無
* 返回值 :無
***************************************/
void DHT11_InitConfing(void)
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE,ENABLE );
DHT11_O();
DHT11_H;
}
/**************************************
* 函 數(shù) : DHT11配置為輸出
* 參 數(shù) :無
* 返回值 :無
***************************************/
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);
}
/**************************************
* 函 數(shù) : DHT11配置為輸入
* 參 數(shù) :無
* 返回值 :無
***************************************/
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);
}
/**************************************
* 函 數(shù) : DHT11讀取電平
* 參 數(shù) :無
* 返回值 :高電平 1、 低電平 0
***************************************/
uint8_t DHT11_R(void){
return GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6);
}
/**************************************
* 函 數(shù) : DHT11讀取數(shù)據(jù)
* 參 數(shù) :無
* 返回值 :高電平 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;
}
/**************************************
* 函 數(shù) : DHT11讀取字節(jié)
* 參 數(shù) :無
* 返回值 :字節(jié)
***************************************/
uint8_t DHT11_ReadByte(void){
uint8_t i,data = 0;
for( i = 0 ; i < 8 ; i++ ){
data <<= 1;
data |= DHT11_ReadBit();
}
return data;
}
/**************************************
* 函 數(shù) : DHT11讀取溫濕度
* 參 數(shù) :無
* 返回值 :SUCESS 1 ,F(xiàn)AIL = 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;
}
復(fù)制代碼
STM32_DHT11 (2).7z
2020-5-6 11:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
177.37 KB, 下載次數(shù): 29, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1