可以在获取温湿度的代码前加一个判断,如果串口接收到了数据,则先处理串口指令,否则再获取温湿度并控制LED灯。

修改后的代码如下:

printf("hello world!\n"); while (1) { if(uart1RxState==1) { if(strstr((const char *)uart1RxBuff, cmdLightupStr)!= NULL) // 判断串口是否有发送"LIGHT UP"指令 { HAL_GPIO_WritePin(LED3_GPIO_Port,LED3_Pin,GPIO_PIN_RESET); printf("LIGHT UP OK");
} else if(strstr((const char *)uart1RxBuff, cmdLightoffStr)!= NULL) { HAL_GPIO_WritePin(LED3_GPIO_Port,LED3_Pin,GPIO_PIN_SET); printf("LIGHT OFF OK");
}
if(strstr((const char *)uart1RxBuff, cmdWaterONStr)!= NULL)
{ HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_RESET); printf("WATER ON OK");
} else if(strstr((const char *)uart1RxBuff, cmdWateroffStr)!= NULL) { HAL_GPIO_WritePin(LED4_GPIO_Port,LED4_Pin,GPIO_PIN_SET); printf("WATER OFF OK");
}
uart1RxState=0; uart1RxCounter =0; memset(uart1RxBuff,0,128);
} else { //获取温湿度 call_sht11(&Tem,&Hum); printf("%d℃ %d%%RH\r\n",Tem,Hum);

    if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin)==0)
    {
        HAL_Delay(300);
        HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
        if(HAL_GPIO_ReadPin(LED1_GPIO_Port,LED1_Pin)==GPIO_PIN_SET)
            printf("OUT");
        else
            printf("ENTER");
    }
    if(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin)==0)
    {
        HAL_Delay(300);
        HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
        if(HAL_GPIO_ReadPin(LED2_GPIO_Port,LED2_Pin)==GPIO_PIN_SET)
            printf("STOP");
        else
            printf("FIRE");
    }
}
printfhello world!n; while 1 获取温湿度 call_sht11&Tem&Hum; printfd℃ dRHrnTemHum; 		 ifHAL_GPIO_ReadPinKEY1_GPIO_PortKEY1_Pin==0		 			 HAL_Delay300;			 HAL_GPIO_TogglePinLED1_GPIO_

原文地址: https://www.cveoy.top/t/topic/gCHF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录