From 090fe1debf7cceb764db66c12b5faa38cf66d0ac Mon Sep 17 00:00:00 2001 From: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> Date: Wed, 16 Apr 2025 06:01:58 +0000 Subject: [PATCH 1/7] add modules/oled. Signed-off-by: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> --- modules/oled/OLED.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 modules/oled/OLED.c diff --git a/modules/oled/OLED.c b/modules/oled/OLED.c new file mode 100644 index 0000000..e69de29 -- Gitee From 8d023e6186232a3a10be62ce20c0d88f7d385fe7 Mon Sep 17 00:00:00 2001 From: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> Date: Sun, 27 Apr 2025 12:29:01 +0000 Subject: [PATCH 2/7] add modules. Signed-off-by: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> --- modules/dht11 | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 modules/dht11 diff --git a/modules/dht11 b/modules/dht11 new file mode 100644 index 0000000..e69de29 -- Gitee From 297d64d2aca6553fe1b3a708af70202b152aa7e3 Mon Sep 17 00:00:00 2001 From: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> Date: Sun, 27 Apr 2025 12:29:12 +0000 Subject: [PATCH 3/7] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20modu?= =?UTF-8?q?les/dht11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/dht11 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 modules/dht11 diff --git a/modules/dht11 b/modules/dht11 deleted file mode 100644 index e69de29..0000000 -- Gitee From f3266fe60d1bdfb05cac283c6d5ca1bca252e081 Mon Sep 17 00:00:00 2001 From: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> Date: Sun, 27 Apr 2025 12:29:35 +0000 Subject: [PATCH 4/7] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20dht11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/dht11/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 modules/dht11/.keep diff --git a/modules/dht11/.keep b/modules/dht11/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 4d0d1eb0923a69acb958df4973adeb58a624b00e Mon Sep 17 00:00:00 2001 From: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> Date: Sun, 27 Apr 2025 12:30:08 +0000 Subject: [PATCH 5/7] add modules/dht11/HW_DHT11.c. Signed-off-by: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> --- modules/dht11/HW_DHT11.c | 64 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 modules/dht11/HW_DHT11.c diff --git a/modules/dht11/HW_DHT11.c b/modules/dht11/HW_DHT11.c new file mode 100644 index 0000000..e850f96 --- /dev/null +++ b/modules/dht11/HW_DHT11.c @@ -0,0 +1,64 @@ +#include "stm32f1xx_hal.h" +#include "DHT11.h" +#include "main.h" + +void HW_DWT_Init(void){ + CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; + DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk; + DWT->CYCCNT=0; +} +void HW_DELAY_Us(uint32_t delayUsCount) { + uint32_t sys_clk = HAL_RCC_GetHCLKFreq(); + uint32_t ticks = delayUsCount * (sys_clk / 1000000); + uint32_t start = DWT->CYCCNT; + while ((DWT->CYCCNT - start) < ticks); +} + +uint8_t HW_DHT11_Read(float *tempValue, float *humidValue) { + uint8_t data[5] = {0}; + uint8_t retryCount = 0; + + HAL_GPIO_WritePin(DHT11_GPIO_Port, DHT11_Pin, GPIO_PIN_RESET); + HW_DELAY_Us(18000); + HAL_GPIO_WritePin(DHT11_GPIO_Port, DHT11_Pin, GPIO_PIN_SET); + HW_DELAY_Us(40); + + retryCount = 100; + while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_RESET) { + if (retryCount-- == 0) return DHT11_ERROR_TIMEOUT; + HW_DELAY_Us(1); + } + + retryCount = 100; + while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_SET) { + if (retryCount-- == 0) return DHT11_ERROR_TIMEOUT; + HW_DELAY_Us(1); + } + + for (uint8_t i = 0; i < 40; i++) { + retryCount = 100; + while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_RESET) { + if (retryCount-- == 0) return DHT11_ERROR_TIMEOUT; + HW_DELAY_Us(1); + } + + HW_DELAY_Us(40); + if (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_SET) { + data[i/8] |= (1 << (7 - (i%8))); + retryCount = 100; + while (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_SET) { + if (retryCount-- == 0) return DHT11_ERROR_TIMEOUT; + HW_DELAY_Us(1); + } + } + } + + if (data[4] != (data[0] + data[1] + data[2] + data[3])) { + return DHT11_ERROR_CHECKSUM; + } + + *humidValue = (float)data[0]; + *tempValue = (float)data[2]; + + return DHT11_OK; +} -- Gitee From 71d6c63c4296940ac45590c9857d21600f10f367 Mon Sep 17 00:00:00 2001 From: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> Date: Sun, 27 Apr 2025 12:30:44 +0000 Subject: [PATCH 6/7] add modules/dht11/HW_DHT11.h. Signed-off-by: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> --- modules/dht11/HW_DHT11.h | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 modules/dht11/HW_DHT11.h diff --git a/modules/dht11/HW_DHT11.h b/modules/dht11/HW_DHT11.h new file mode 100644 index 0000000..718fcb3 --- /dev/null +++ b/modules/dht11/HW_DHT11.h @@ -0,0 +1,34 @@ +#ifndef __HW_DHT11_H__ +#define __HW_DHT11_H__ + + +// 定义一个枚举类型 DHT11_Status,用于表示 DHT11 传感器操作的状态 +typedef enum { + DHT11_OK = 0, // 表示操作成功,状态码为 0 + DHT11_ERROR_TIMEOUT, // 表示操作超时错误 + DHT11_ERROR_CHECKSUM // 表示校验和错误 +} DHT11_Status; + +/** + * @brief 初始化 DWT(数据观察点和跟踪)功能 + * @param 无 + * @retval 无 + */ +void HW_DWT_Init(void); +/** + * @brief 实现微秒级的延时 + * @param delayUsCount: 需要延时的微秒数 + * @retval 无 + */ +void HW_DELAY_Us(uint32_t delayUsCount); +/** + * @brief 从 DHT11 传感器读取温湿度数据 + * @param tempValue: 指向 float 类型的指针,用于存储读取到的温度值 + * @param humidValue: 指向 float 类型的指针,用于存储读取到的湿度值 + * @retval uint8_t 类型,实际代表 DHT11_Status 枚举类型的值,用于表示操作状态 + */ +uint8_t DHT11_Read(float *tempValue, float *humidValue); + + + +#endif -- Gitee From a176ff5fd36e3f8b618475bb0108180e63bd7c4f Mon Sep 17 00:00:00 2001 From: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> Date: Sun, 27 Apr 2025 12:30:59 +0000 Subject: [PATCH 7/7] update modules/dht11/HW_DHT11.c. Signed-off-by: xuhuabing <15280801+xu_hua_bing@user.noreply.gitee.com> --- modules/dht11/HW_DHT11.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/dht11/HW_DHT11.c b/modules/dht11/HW_DHT11.c index e850f96..cf34f46 100644 --- a/modules/dht11/HW_DHT11.c +++ b/modules/dht11/HW_DHT11.c @@ -1,5 +1,5 @@ #include "stm32f1xx_hal.h" -#include "DHT11.h" +#include "HW_DHT11.h" #include "main.h" void HW_DWT_Init(void){ -- Gitee