HAL_Delay(1000); } } ``` 5. 错误处理: 在读取和解析过程中,需要处理可能出现的错误,如DHT11无响应、数据校验失败等。 示例代码已经在DHT11_CheckResponse和DHT11_ReadData函数中实现了基本的错误处理。 通过以上步骤,你可以在STM32上成功读取DHT11温湿度传感器的数据,并进行处理或显示。
#ifndef DHT11_DHT11_H#define DHT11_DHT11_H#include"stm32f1xx.h"#include"tim.h"voidDHT11_OUT(void);voidDHT11_IN(void);voidDHT11_Reset(void);uint8_tDHT11_Check(void);uint8_tDHT11_Read_Bit(void);uint8_tDHT11_Read_Byte(void);uint8_tDHT11_Read_Data(uint8_t*humi,uint8_t*tem...
DHT11_Mode_IN_NP(); // 主机输入,获取 DHT11 数据 if (DHT11_IN == 0) // 收到从机应答 { while (DHT11_IN == 0); // 等待从机应答的低电平结束 while (DHT11_IN == 1); // 等待从机应答的高电平结束 /*开始接收数据*/ DHT11_Data->humi_int = DHT11_ReadByte(); DHT11_Data->...
HAL_GPIO_WritePin(DHT11_PORT, DHT11_PIN, GPIO_PIN_SET); // 设置为输入模式 } uint8_t DHT11_CheckResponse(void) { uint8_t retry = 0; // 等待DHT11响应,响应信号为80us低电平 while (DHT11_DATA_READ() && retry < 100) { delay_us(1); retry++; } // 检查是否收到响应 if (retry...
STM32使用HAL库驱动DHT11读取温湿度程序 驱动DHT11、DHT22、DS18BB20等温湿度模块时序是比较简单的,关键在于控制好时序的延时时间,HAL库的延时函数HAL_Delay是毫秒级别延时函数,所关键点就是实现微秒级别的延时函数。 微秒级别延时函数实现见我的另 ...
//从DHT11读取一次数据//temp:温度值(范围:0~50°)//humi:湿度值(范围:20%~90%)//返回值:HAL_OK,正常;1,读取失败uint8_t DHT11_Read_Data(uint8_t *humiH,uint8_t *humiL,uint8_t *tempH,uint8_t *tempL){ uint8_t buf[5]; uint8_t i; DHT11_Rst(); if(DHT11_Check...
void DHT11_In_init() { /*Configure GPIO pin : PtPin */ GPIO_InitStruct.Pin = DHT11_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(DHT11_GPIO_Port, &GPIO_InitStruct); ...
函数名:Dht11_Reset 功能:从DHT11读取一个位 返回值:1/0 ***/uint8_tDht11_ReadBit(void){uint8_tretry =0;/*每bit以50us低电平标置开始,轮询直到从机发出 的50us 低电平 结束*/while(DHT11_DQ_IN == GPIO_PIN_RESET && retry <100) { retry++; Dht11_Delay(1); };/*DHT11 以26~28us...
STM32单片机学习笔记(2):DHT11温湿度传感器-利用CubMX生成基于32单片机的HAl库工程,然后编写程序在proteus上仿真验证。本项目最适合没有开发板的同学学习,零成本利用仿真软件率先入门STM32单片机。这是第二部分针对单总线通信的一个典型例子——DHT11温湿度传感器,主要