void ADC_Work(uint8_t *L_Flag,uint8_t *R_Flag) { if(OpeningRoad_Flag == 1 && (*R_Flag == 0 ) && miss_Flag == 0) { g_sSteeringError = (right_V - left_V ); } else if(miss_Flag == 1) { g_sSteeringError = -100; } else if(miss_Flag == 2) { g_sSteeringError = 100; } //偏差放大 if((g_sSteeringError < 30) && (g_sSteeringError > -30)) { if((g_sSteeringError < 10) && (g_sSteeringError > -10)) { Servo_P = 15; } else { Servo_P = 15; } } else { Servo_P = 15; } ServoDuty = g_sSteeringError * Servo_P/10; //偏差限幅 if(ServoDuty>100) ServoDuty=100; if(ServoDuty<-100) ServoDuty=-100; }什么意思
时间: 2024-02-14 11:18:38 浏览: 81
adc.zip_STM8L _adc_stm8l ADC_stm8l adc_zip
这段代码是一个函数,名为ADC_Work,它接收两个参数:L_Flag和R_Flag,它们都是指向uint8_t类型的指针。在函数内部,首先判断OpeningRoad_Flag是否为1且R_Flag为0且miss_Flag为0,如果是,则计算左右轮速度差(g_sSteeringError),否则如果miss_Flag为1,则将g_sSteeringError设置为-100,如果miss_Flag为2,则将g_sSteeringError设置为100。
接下来,将g_sSteeringError放大,如果偏差在-30到30之间,则将Servo_P设置为15,否则也将Servo_P设置为15。然后将偏差乘以Servo_P/10得到ServoDuty,同时对ServoDuty进行限幅,如果超过了100则将其设置为100,如果小于-100则将其设置为-100。最后,函数结束。
阅读全文