代码代码DHT11温湿度传感器HAL库驱动代码大放送!
最近有个新项目有用到DHT11温湿度传感器,关于这款传感器的介绍已经有好多大佬整理分享了,这里推荐几位整理的文章大家可以看看,我这里就只分享一下代码。
STM32学习之传感器篇——DHT11温湿度传感器
DHT11详细介绍(内含51和STM32代码)
【STM32】DHT11温湿度模块传感器详解&代码
首先是引脚的配置,引脚的默认电平低电平,使用开漏上拉输出模式,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