33 lines
1.1 KiB
C
33 lines
1.1 KiB
C
#include "Motor.h"
|
|
#include "zf_driver_gpio.h"
|
|
#include "zf_driver_pwm.h"
|
|
#include "PID_Controller.h"
|
|
#include "MotorEncoder.h"
|
|
|
|
void motor_init(void)
|
|
{
|
|
gpio_init(DIR_L, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
|
pwm_init(PWM_L, 17000, 0);
|
|
|
|
gpio_init(DIR_R, GPO, GPIO_HIGH, GPO_PUSH_PULL);
|
|
pwm_init(PWM_R, 17000, 0);
|
|
}
|
|
// 右电机速度设置
|
|
void motor_set_pwm_right(int32 pwm)
|
|
{
|
|
uint8_t dir = (pwm >= 0) ? 1 : 0;//根据电机接线方式调整方向
|
|
uint32 abs_pwm = abs(pwm);
|
|
if(pwm > MOTOR_MAX) pwm = MOTOR_MAX;
|
|
gpio_set_level(DIR_R, dir);//设置方向
|
|
pwm_set_duty(PWM_R, abs_pwm);//设置PWM占空比
|
|
}
|
|
|
|
// 左电机速度设置 - 需要根据实际硬件修改
|
|
void motor_set_pwm_left(int32 pwm)
|
|
{
|
|
uint8_t dir = (pwm >= 0) ? 0 : 1;//根据电机接线方式调整方向
|
|
uint32 abs_pwm = abs(pwm);
|
|
if(pwm > MOTOR_MAX) pwm = MOTOR_MAX;
|
|
gpio_set_level(DIR_L, dir);//设置方向
|
|
pwm_set_duty(PWM_L, abs_pwm);//设置PWM占空比
|
|
} |