#define StopSwitch 0 #define CascadeSwitch 1 CAR xCarParam = {0}; float tarYaw = 90.0f; uint8_t uStateSwicth = 0; uint8_t xStatus = 0; uint8_t yStatus = 0; uint16_t SpeedMaxX = 200; uint16_t SpeedMaxY = 200; uint16_t SpeedMaxZ = 400; uint16_t uStartSpeed = 0; uint16_t speed_up_cnt_x = 0; uint16_t speed_up_cnt_y = 0; uint8_t increase_rat_x = 4; uint8_t increase_rat_y = 4; float Kx = 1.0f; float Ky = 1.0f; void SpeedX_Control(void); void SpeedY_Control(void); void MoveReset(void) { xCarParam.Speed_X = 0; xCarParam.Speed_Y = 0; xCarParam.Speed_Z = 0; xCarParam.Status = 0; xCarParam.EncoderSumX = 0; xCarParam.EncoderSumY = 0; xCarParam.CarDistanceX = 0; xCarParam.CarDistanceY = 0; } void Move(uint8_t CoordX,uint8_t CoordY) { pit_disable(MOTOR_PIT); MoveReset(); xCarParam.CarDistanceX = (int64_t)((CoordX - xCarParam.nowCoordX)*20.0f*Kx); xCarParam.CarDistanceY = (int64_t)((CoordY - xCarParam.nowCoordY)*20.0f*Ky); uStateSwicth = CascadeSwitch; pit_enable(MOTOR_PIT); } void Stop() { pit_disable(MOTOR_PIT); MoveReset(); uStateSwicth = StopSwitch; pit_enable(MOTOR_PIT); }
时间: 2024-04-18 15:23:39 浏览: 165
C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
这段代码是一个移动控制的函数,通过控制小车的速度和距离来实现移动。
首先定义了一些常量和变量,如停止开关和级联开关的状态,小车的参数,目标偏航角,速度上限,起始速度等。
然后定义了一些函数,如速度控制函数SpeedX_Control和SpeedY_Control,以及MoveReset函数用于重置小车参数。
Move函数用于控制小车移动到指定的坐标位置。它首先禁用了定时器中断,然后重置小车参数。接着计算出小车在X和Y方向上需要移动的距离,并将其存储在CarDistanceX和CarDistanceY中。最后将级联开关状态设置为1,重新启用定时器中断。
Stop函数用于停止小车的运动。它也首先禁用了定时器中断,然后重置小车参数。然后将级联开关状态设置为0,重新启用定时器中断。
这段代码中还有一些其他的变量和参数,具体功能需要根据上下文来确定。
阅读全文