mspm0电机驱动2轮小车代码
tb6612驱动电机
·
#include "Motor.h"
#include "ti/driverlib/dl_gpio.h"
#include "ti/driverlib/dl_timer.h"
#include "ti/driverlib/dl_timera.h"
//电机启动
void Motor_On(void)
{
DL_GPIO_setPins(DIR_STBY_PORT, DIR_STBY_PIN );
}
//电机关闭
void Motor_off(void)
{
DL_GPIO_clearPins(DIR_STBY_PORT, DIR_STBY_PIN );
DL_GPIO_clearPins(DIR_AIN1_PORT, DIR_AIN1_PIN);
DL_GPIO_clearPins(DIR_AIN2_PORT, DIR_AIN2_PIN);
DL_GPIO_clearPins(DIR_BIN1_PORT, DIR_BIN1_PIN);
DL_GPIO_clearPins(DIR_BIN2_PORT, DIR_BIN2_PIN);
}
//电机速度
void set_speed(uint8_t side,int8_t duty)
{
uint32_t compareValue =0;
if(side == 0)//左轮
{
if(duty<0)//反转
{
compareValue = 3199-3199*(-duty/100.0);
DL_TimerA_setCaptureCompareValue(PWM_0_INST,compareValue,GPIO_PWM_0_C0_IDX );
DL_GPIO_setPins(DIR_AIN1_PORT ,DIR_AIN1_PIN );
DL_GPIO_clearPins(DIR_AIN2_PORT , DIR_AIN2_PIN);
}
else if(duty>0)//正转
{
compareValue = 3199-3199*(duty/100.0);
DL_TimerA_setCaptureCompareValue(PWM_0_INST,compareValue,GPIO_PWM_0_C0_IDX );
DL_GPIO_setPins(DIR_AIN2_PORT , DIR_AIN2_PIN);
DL_GPIO_clearPins(DIR_AIN1_PORT ,DIR_AIN1_PIN );
}
else
{
DL_GPIO_clearPins(DIR_AIN2_PORT , DIR_AIN2_PIN);
DL_GPIO_clearPins(DIR_AIN1_PORT ,DIR_AIN1_PIN );
}
}
else //右轮
{
if(duty<0)
{
compareValue = 3199-3199*(-duty/100.0);
DL_TimerA_setCaptureCompareValue(PWM_0_INST,compareValue,GPIO_PWM_0_C1_IDX);
DL_GPIO_setPins(DIR_BIN1_PORT ,DIR_BIN1_PIN );
DL_GPIO_clearPins(DIR_BIN2_PORT , DIR_BIN2_PIN);
}
else if(duty>0)
{
compareValue = 3199-3199*(duty/100.0);
DL_TimerA_setCaptureCompareValue(PWM_0_INST,compareValue,GPIO_PWM_0_C1_IDX);
DL_GPIO_setPins(DIR_BIN2_PORT , DIR_BIN2_PIN);
DL_GPIO_clearPins(DIR_BIN1_PORT ,DIR_BIN1_PIN );
}
else
{
DL_GPIO_clearPins(DIR_BIN2_PORT , DIR_BIN2_PIN);
DL_GPIO_clearPins(DIR_BIN1_PORT ,DIR_BIN1_PIN );
}
}
}
void Init()
{
//关闭所有输出
Motor_off();
//使能pwm输出
DL_Timer_startCounter(PWM_0_INST);
}
用的是tb6612稳压版驱动电机,软件是用ccs。
更多推荐




所有评论(0)