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 12:18:38 浏览: 16
这段代码是一个函数,名为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。最后,函数结束。
相关问题
void usart_SendCmd(__IO uint8_t *cmd, uint8_t len)
void usart_SendCmd(__IO uint8_t *cmd, uint8_t len)是一个函数,用于发送指令到USART(通用同步/异步收发传输器)设备。该函数接受两个参数:cmd和len。
- cmd是一个指向uint8_t类型的指针,表示要发送的指令。uint8_t是一个8位无符号整数类型。
- len是一个uint8_t类型的变量,表示指令的长度。
该函数的作用是将指令发送到USART设备,以便进行通信或执行特定的操作。具体的实现细节可能需要查看函数的定义和上下文。
void assert_failed(uint8_t* file, uint32_t line);
void assert_failed(uint8_t* file, uint32_t line)是一个用于在C语言中进行调试的函数。它通常用于在程序中检查某些条件是否满足,如果不满足,则会调用该函数来输出错误信息并停止程序的执行。在该函数中,file参数表示出现错误的文件名,line参数表示出现错误的行号。这个函数的作用是帮助程序员在开发过程中快速定位错误并进行调试。
演示代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
void assert_failed(uint8_t* file, uint32_t line) {
printf("Wrong parameters value: file %s on line %d\r\n", file, line);
exit(1);
}
int main() {
int a = 10, b = 20;
// 检查a是否等于b,如果不等于则调用assert_failed函数
if (a == b) {
printf("a equals b.\n");
} else {
assert_failed(__FILE__, __LINE__);
}
return 0;
}
```