if(delat_x<-20&&delat_y>20) { for(m = 0; m <abs(delat_x); m++) { HAL_Delay(100); UART_Printf("车辆行驶中左转:\r\n"); } GPIO_Led2Toggle(); } //绿灯闪烁 else if(delat_x>20&&delat_y<-20) { for(m = 0; m <delat_x; m++) { HAL_Delay(100); UART_Printf("车辆行驶中右转:\r\n"); GPIO_Led1Toggle(); } //蓝灯闪烁} } else if(delat_z<0) { UART_Printf("车辆行驶中前进:\r\n"); if(delat_z<-20) for(m = 0; m <abs(delat_z); m++) { HAL_Delay(100); UART_Printf("车辆行驶中前进加速:\r\n"); GPIO_Led1Ctr2(LED_ON); } } else if(delat_z>0) { UART_Printf("车辆行驶中后退:\r\n"); if(delat_z>20) for(m = 0; m <delat_z; m++) { HAL_Delay(100); UART_Printf("车辆行驶中后退减速:\r\n");GPIO_Led1Ctr1(LED_ON); } }
时间: 2024-01-31 15:04:55 浏览: 60
这段代码可以做一些简单的优化,比如:
1. 可以将相似的代码抽象成一个函数,避免代码重复,提高代码复用性。
2. 可以使用枚举类型或者宏定义来定义 LED 灯的状态,提高代码的可读性和可维护性。
3. 可以考虑使用更加高效的延时方式,如使用定时器实现延时。
4. 可以使用条件语句的嵌套来避免重复判断条件,提高代码的执行效率。
下面是一个简单的优化示例:
```c
typedef enum {
LED_OFF = 0,
LED_ON
} LedState;
void toggleLed(LedState state) {
if (state == LED_ON) {
GPIO_Led1Ctr2(LED_ON);
} else {
GPIO_Led1Ctr1(LED_ON);
}
}
void handleCarMovement(int delta_x, int delta_y, int delta_z) {
if (delta_x < -20 && delta_y > 20) {
for (int i = 0; i < abs(delta_x); i++) {
HAL_Delay(100);
UART_Printf("车辆行驶中左转:\r\n");
}
toggleLed(LED_ON);
} else if (delta_x > 20 && delta_y < -20) {
for (int i = 0; i < delta_x; i++) {
HAL_Delay(100);
UART_Printf("车辆行驶中右转:\r\n");
}
toggleLed(LED_OFF);
} else if (delta_z < 0) {
UART_Printf("车辆行驶中前进:\r\n");
if (delta_z < -20) {
for (int i = 0; i < abs(delta_z); i++) {
HAL_Delay(100);
UART_Printf("车辆行驶中前进加速:\r\n");
toggleLed(LED_ON);
}
}
} else if (delta_z > 0) {
UART_Printf("车辆行驶中后退:\r\n");
if (delta_z > 20) {
for (int i = 0; i < delta_z; i++) {
HAL_Delay(100);
UART_Printf("车辆行驶中后退减速:\r\n");
toggleLed(LED_OFF);
}
}
}
}
```
这段代码中,我们将灯的状态抽象成了枚举类型,并且将控制灯的函数封装成了一个单独的函数,提高了代码的可复用性。同时,我们使用了条件语句的嵌套来避免重复判断条件,提高了代码的执行效率。
阅读全文