优化这段代码void Track_Adjust(void) { u16 adcx1,adcx2,adcx3; adcx1=Get_Adc_Average(ADC_Channel_1,10); adcx2=Get_Adc_Average(ADC_Channel_2,10); adcx3=Get_Adc_Average(ADC_Channel_3,10); printf("X1:%d X2:%d,X3:%d \n\r",adcx1,adcx2,adcx3); error[2] = error[1]; error[1] = error[0]; error[0] = (adcx1 * 2 + adcx2 - adcx3* 2)/100; integral += error[0]; derivative = error[0] - lastError; lastError = error[0]; pwm = KP_track * error[0] + KI_track * integral + KD_track * derivative; angle_track=90-pwm; if(angle_track<0) { angle_track=0; } if(angle_track>180) { angle_track=180; } Get_annle(angle_track);
时间: 2024-01-08 12:02:19 浏览: 89
可以考虑以下优化:
1. 可以把变量的定义和初始化放在一起,如下:
```
u16 adcx1 = 0, adcx2 = 0, adcx3 = 0;
```
2. 调用 `Get_Adc_Average()` 函数时,可以把参数值和函数返回值类型都设为 `u16` 类型,避免多次类型转换,如下:
```
u16 adcx1 = Get_Adc_Average((u16)ADC_Channel_1, 10);
u16 adcx2 = Get_Adc_Average((u16)ADC_Channel_2, 10);
u16 adcx3 = Get_Adc_Average((u16)ADC_Channel_3, 10);
```
3. 可以在 printf() 函数中使用格式化字符串,避免多次调用 printf() 函数,如下:
```
printf("X1:%d X2:%d,X3:%d \n\r", adcx1, adcx2, adcx3);
```
4. 可以使用数组来存储 error 的值,这样就可以避免多次复制和移位操作,如下:
```
static u16 error[3] = {0};
error[2] = error[1];
error[1] = error[0];
error[0] = (adcx1 * 2 + adcx2 - adcx3 * 2) / 100;
```
5. 可以使用 static 关键字来定义 integral 和 lastError 变量,避免每次调用函数时都重新定义和初始化,如下:
```
static u16 integral = 0;
static u16 lastError = 0;
```
6. 可以合并 derivative 和 lastError 变量的计算,避免重复计算,如下:
```
derivative = error[0] - lastError;
lastError = error[0];
```
7. 可以使用三目运算符来限制 angle_track 的取值范围,避免 if 判断语句,如下:
```
angle_track = 90 - pwm;
angle_track = (angle_track < 0) ? 0 : ((angle_track > 180) ? 180 : angle_track);
```
8. 可以考虑将函数参数转为 const 类型,避免函数内部误操作修改参数值,如下:
```
void Track_Adjust(const void) {
...
}
```
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)