stm32HAL库驱动DHT11温湿度传感器

代码代码DHT11温湿度传感器HAL库驱动代码大放送!

        最近有个新项目有用到DHT11温湿度传感器,关于这款传感器的介绍已经有好多大佬整理分享了,这里推荐几位整理的文章大家可以看看,我这里就只分享一下代码。

STM32学习之传感器篇——DHT11温湿度传感器

DHT11详细介绍(内含51和STM32代码)

【STM32】DHT11温湿度模块传感器详解&代码

Cube配置

stm32HAL库驱动DHT11温湿度传感器_第1张图片        首先是引脚的配置,引脚的默认电平低电平,使用开漏上拉输出模式,DHT11数据引脚的电流很小,stm32普遍支持8ma以上的电流,所以没必要再外接上拉电阻了,使用内置的完全足以使用,引脚速度选择最低就好,这里科普一下引脚速率不是io的翻转速率是能通过的信号频率,选择高速不仅增加功耗还会引入不必要的高频噪声。这里我将引脚重命名为DHT11_DATA,当然你可以不重命名也可以重命名成其他的,只是在下面头文件代码中注意修改。

头文件

#ifndef __DRIVERS_DHT11_H__
#define __DRIVERS_DHT11_H__

#include "main.h"

typedef struct DHT11_DATA{
    int8_t Temp_INT;
    int8_t Temp_FLOAT;
    int8_t Humi_INT;
    int8_t Humi_FLOAT;
}DHT11_DATA;

typedef enum {
    DHT11_PASS = 1,
    DHT11_No_Response = -1,
    DHT11_Wait_Timeout = -2
}DHT11_InitState;

#define DHT11_WriteDATA(x)    HAL_GPIO_WritePin(DHT11_DATA_GPIO_Port, DHT11_DATA_Pin, x)	 	
#define DHT11_ReadDATA()      HAL_GPIO_ReadPin(DHT11_DATA_GPIO_Port, DHT11_DATA_Pin)

static void DHT11_delay_us(uint32_t time);
static int8_t DHT11_Getbyte(void);

DHT11_InitState DHT11_Init(void);
DHT11_DATA DHT11_GetData(void

你可能感兴趣的:(stm32,嵌入式硬件,单片机)