stm32f407温湿度传感器串口数据显示
时间: 2025-07-15 16:29:29 浏览: 2
为了在 STM32F407 上通过串口显示温湿度传感器的数据,需要完成以下几个步骤:
### 1. 初始化 DHT11 传感器
DHT11 是一款常用的温湿度传感器,它通过单总线协议进行通信。首先需要初始化与 DHT11 的通信接口,并确保能够正确读取数据。
```c
void DHT11_Init(void) {
// 初始化 GPIO 引脚为输出模式
// 设置引脚为上拉输入模式
}
```
### 2. 读取 DHT11 数据
在主循环中调用 `DHT11_ReadData` 函数来获取温湿度数据。该函数会返回一个包含五个字节的数组,其中第一个字节表示湿度的整数部分,第三个字节表示温度的整数部分[^1]。
```c
uint8_t DHT11_ReadData(uint8_t *data) {
// 发送开始信号并等待响应
// 读取 40 位数据
// 验证数据校验和
return (checksum == data[4]) ? 1 : 0;
}
```
### 3. 初始化串口通信
使用 STM32 HAL 库或标准外设库初始化 USART 接口,以便将数据发送到计算机或其他设备。
```c
UART_HandleTypeDef huart2;
void MX_USART2_UART_Init(void) {
huart2.Instance = USART2;
huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
HAL_UART_Init(&huart2);
}
```
### 4. 发送数据到串口
在主循环中,一旦成功读取了 DHT11 的数据,就可以通过串口发送这些数据。
```c
int __io_putchar(int ch) {
HAL_UART_Transmit(&huart2, (uint8_t*)&ch, 1, HAL_MAX_DELAY);
return ch;
}
int main(void) {
uint8_t data[5];
DHT11_Init();
MX_USART2_UART_Init();
while (1) {
if (DHT11_ReadData(data)) {
float temperature = (float)data[2];
float humidity = (float)data[0];
printf("Temperature: %.1f degrees Celsius\n", temperature);
printf("Humidity: %.1f%%\n", humidity);
} else {
printf("Failed to read data from DHT11 sensor.\n");
}
HAL_Delay(2000); // 延时一段时间后再次读取温湿度数据
}
}
```
### 5. 调试与测试
确保所有硬件连接正确无误,并且串口调试工具(如 Tera Term 或者 Arduino IDE 的串口监视器)设置正确的波特率和其他参数。这样就可以看到从 DHT11 传感器读取的温湿度数据了[^1]。
阅读全文
相关推荐


















