一、描述你遇到的问题
关键代码如下int DHT11_Read(float *RH, float *temperature) {
uint8_t data[5] = {0};
int timeout;
// 发送起始信号
uapi_gpio_set_dir(15, GPIO_DIRECTION_OUTPUT);
uapi_gpio_set_val(15, GPIO_LEVEL_LOW);
uapi_systick_delay_ms(19); // 至少18ms
uapi_gpio_set_val(15, GPIO_LEVEL_HIGH);
uapi_systick_delay_us(20); // 20-40us
// 切换为输入
uapi_gpio_set_dir(15, GPIO_DIRECTION_INPUT);
// 等待从机响应:先等待低电平变高(80us低电平结束)
timeout = 20000; // 10ms超时
while (uapi_gpio_get_val(15) == 0 && timeout > 0) {
uapi_systick_delay_us(1);
timeout--;
}
if (timeout == 0) return -1;
// 等待高电平变低(80us高电平结束)
timeout = 20000;
while (uapi_gpio_get_val(15) == 1 && timeout > 0) {
uapi_systick_delay_us(1);
timeout--;
}
if (timeout == 0) return -1;
// 读取40位数据
for (int i = 0; i < 40; i++) {
// 等待低电平变高(位起始)
timeout = 20000;
while (uapi_gpio_get_val(15) == 0 && timeout > 0) {
uapi_tcxo_delay_us(1);
timeout--;
}
if (timeout == 0) return -3;
// 延时约30us,判断电平
uapi_systick_delay_us(28);
if (uapi_gpio_get_val(15) == 1) {
data[i/8] |= (1 << (7 - i%8));
}
// 等待高电平变低
timeout = 10000;
while (uapi_gpio_get_val(15) == 1 && timeout > 0) {
uapi_systick_delay_us(1);
timeout--;
}
if (timeout == 0) return -3;
}
*RH = data[0] + data[1] * 0.1f;
*temperature = data[2] + data[3] * 0.1f;
return 0;
}
请详细描述问题
二、你具体做的所有步骤结果截图
请插入图片
三、当前开发板状态全景照片
请插入图片
四、开发板串口所有日志
DHT11 timeout
RH=213.5 Tmp=27.5
RH=213.5 Tmp=27.5
RH=79.1 Tmp=27.4
RH=207.1 Tmp=27.7
RH=212.5 Tmp=27.6
RH=95.9 Tmp=30.4
RH=79.9 Tmp=31.7
RH=79.1 Tmp=31.4
RH=92.8 Tmp=97.2
RH=95.8 Tmp=32.8
RH=203.1 Tmp=27.6
RH=75.9 Tmp=30.7
RH=77.5 Tmp=30.5
RH=75.1 Tmp=27.5
RH=203.1 Tmp=27.4
RH=90.8 Tmp=97.5
RH=203.1 Tmp=27.4
RH=201.1 Tmp=27.7
RH=89.8 Tmp=99.7
RH=201.1 Tmp=27.6
RH=75.1 Tmp=31.4
RH=88.8 Tmp=129.3
DHT11 timeout
RH=203.1 Tmp=31.5
RH=205.5 Tmp=27.5
RH=87.8 Tmp=30.4
RH=199.1 Tmp=27.4
RH=71.1 Tmp=29.7
RH=94.8 Tmp=97.4
RH=71.1 Tmp=27.4
DHT11 timeout
DHT11 timeout
RH=199.1 Tmp=27.4
RH=85.9 Tmp=30.4
RH=71.1 Tmp=26.2
RH=71.9 Tmp=31.4
RH=85.8 Tmp=29.5
DHT11 timeout
RH=71.9 Tmp=29.7
RH=69.9 Tmp=29.5
RH=199.1 Tmp=29.6
RH=69.5 Tmp=26.3
RH=67.9 Tmp=25.7
RH=83.8 Tmp=96.6
RH=195.1 Tmp=26.2
RH=67.1 Tmp=29.7
RH=67.9 Tmp=25.6
RH=195.1 Tmp=26.3
RH=83.8 Tmp=29.7
RH=69.5 Tmp=25.7
DHT11 timeout
RH=67.1 Tmp=30.2
RH=201.5 Tmp=25.7
RH=67.9 Tmp=25.7
RH=67.9 Tmp=29.5
RH=201.5 Tmp=25.7
RH=81.8 Tmp=99.5
RH=81.8 Tmp=99.5
RH=195.1 Tmp=29.6
DHT11 timeout
RH=195.1 Tmp=26.3
请在此处粘贴串口日志