printf后面的dth11测量函数跑不了

    delay_ms(1500);
    DHT11_Read_Data(&temp,&humi);
  delay_ms(1500);
    printf("humi=%2d\r\n",humi);
    Delay_ms(500);
    if(k==l){
    printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CuTemperature\\\":%2d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n",SC,temp); 
  Delay_s(2);
  printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CurrentHumidity\\\":%2d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n",SC,humi); 
  Delay_s(2);
    k=k-10;
    

该回答引用GPT
以下是可能的修正代码:

delay_ms(1500);
uint8_t temp, humi;
DHT11_Read_Data(&temp, &humi);
delay_ms(1500);
printf("humi=%2d\r\n", humi);
Delay_ms(500);
if (k == l) {
    printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CuTemperature\\\":%2d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n", SC, temp);
    Delay_s(2);
    printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CurrentHumidity\\\":%2d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n", SC, humi);
    Delay_s(2);
    k = k - 10;
}

这个修正代码假设你已经有了一个名为 DHT11_Read_Data 的函数,它可以读取 DHT11 传感器的温度和湿度数据,并将它们存储在 temphumi 变量中。如果你没有这个函数,你需要编写它或者使用其他可用的库函数。

下面是修正后的代码,主要问题是 printf 后面的 dth11 函数名称和参数没有写对。建议将 DHT11_Read_Data(&temp,&humi); 提前至 printf 之前,这样可以避免输出值过早或过晚的问题。

delay_ms(1500);
int temp, humi;
DHT11_ReadData(&temp, &humi);
delay_ms(1500);

printf("Temperature=%d\r\n", temp);
Delay_ms(500);

if (k == l) {
    printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CuTemperature\\\":%d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n", SC, temp);
    Delay_s(2);

    printf("AT+MQTTPUB=0,\"%s\",\"{\\\"method\\\":\\\"thing.service.property.set\\\"\\,\\\"id\\\":\\\"2012934115\\\"\\,\\\"params\\\":{\\\"CurrentHumidity\\\":%d}\\\,\\\"version\\\":\\\"1.0.0\\\"}\",1,0\r\n", SC, humi);
    Delay_s(2);

    k -= 10;
}


你好,你的这个问题实验现象是什么,贴的代码也不完整,代码片段中哪个是测量函数,描述得有些乱,把需求描述清楚一些,可以更好的有参考答案

我看到以下几个问题:

  1. delay_ms(1500) 两次调用之间没有任何逻辑,可以合并为 delay_ms(3000)

  2. humi 变量定义后没有初始化,第一次读取 DHT11 的数据前它的值是不定的。应该初始化为 0,如:

c
int humi = 0;

  1. printf("humi=%2d\r\n",humi); 后面漏了一个 Delay,应该加上,例如:

c
printf("humi=%2d\r\n",humi);
Delay_ms(500);

  1. if(k==l) 条件判断里 l 变量也没有初始化,应该初始化,例如:

c
int l = 0;
if(k==l) { ... }

  1. Delay_s(2) 应该改为 Delay_ms(2000),以保持时间单位的一致性