新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2018-8-12
- 在线时间
- 5 小时
|
5金钱
l298n有4个in口 4个out口 我用in3 in4 out3 out4 是正常的,控制的电机上电以后直接开始转,而in1 in2 out1 out2 控制的电机上电以后不转 按住复位才转, 两个l298n都是这样,而且我控制两个电机的代码是一样的 这是什么毛病,求大佬帮忙解决一下。以下是部分代码,主函数就调用的CarGo()void CarGo(void)
{
front_left_speed_duty=SPEED_DUTY;
front_right_speed_duty=SPEED_DUTY;
behind_left_speed_duty=SPEED_DUTY;
behind_right_speed_duty=SPEED_DUTY;
}
void MotorGPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = FRONT_LEFT_F_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(FRONT_LEFT_F_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = FRONT_LEFT_B_PIN;
GPIO_Init(FRONT_LEFT_B_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = FRONT_RIGHT_F_PIN;
GPIO_Init(FRONT_RIGHT_F_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = FRONT_RIGHT_B_PIN;
GPIO_Init(FRONT_RIGHT_B_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = BEHIND_LEFT_F_PIN;
GPIO_Init(BEHIND_LEFT_F_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = BEHIND_LEFT_B_PIN;
GPIO_Init(BEHIND_LEFT_B_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = BEHIND_RIGHT_F_PIN;
GPIO_Init(BEHIND_RIGHT_F_GPIO, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = BEHIND_RIGHT_B_PIN;
GPIO_Init(BEHIND_RIGHT_B_GPIO, &GPIO_InitStructure);
}
//电机驱动IO定义
/*
FRONT_LEFT_F_PIN PG13 左前前进IO1
FRONT_LEFT_B_PIN PG11 左前后退IO1
FRONT_RIGHT_F_PIN PC11 右前前进IO1
FRONT_RIGHT_B_PIN PD0 右前后退IO2
BEHIND_LEFT_F_PIN PD6 左后前进IO1
BEHIND_LEFT_B_PIN PG9 左后后退IO2
右后电机的两个控制IO这里改为两路使能EN1、EN2,高电平有效
BEHIND_RIGHT_F_PIN PD4 右电机使能IO1
BEHIND_RIGHT_B_PIN PD2 左电机使能IO
*/
#define FRONT_LEFT_F_PIN GPIO_Pin_13
#define FRONT_LEFT_F_GPIO GPIOG
#define FRONT_LEFT_F_SET GPIO_SetBits(FRONT_LEFT_F_GPIO , FRONT_LEFT_F_PIN)
#define FRONT_LEFT_F_RESET GPIO_ResetBits(FRONT_LEFT_F_GPIO , FRONT_LEFT_F_PIN)
#define FRONT_LEFT_B_PIN GPIO_Pin_11
#define FRONT_LEFT_B_GPIO GPIOG
#define FRONT_LEFT_B_SET GPIO_SetBits(FRONT_LEFT_B_GPIO , FRONT_LEFT_B_PIN)
#define FRONT_LEFT_B_RESET GPIO_ResetBits(FRONT_LEFT_B_GPIO , FRONT_LEFT_B_PIN)
#define FRONT_RIGHT_F_PIN GPIO_Pin_11
#define FRONT_RIGHT_F_GPIO GPIOC
#define FRONT_RIGHT_F_SET GPIO_SetBits(FRONT_RIGHT_F_GPIO , FRONT_RIGHT_F_PIN)
#define FRONT_RIGHT_F_RESET GPIO_ResetBits(FRONT_RIGHT_F_GPIO , FRONT_RIGHT_F_PIN)
#define FRONT_RIGHT_B_PIN GPIO_Pin_0
#define FRONT_RIGHT_B_GPIO GPIOD
#define FRONT_RIGHT_B_SET GPIO_SetBits(FRONT_RIGHT_B_GPIO , FRONT_RIGHT_B_PIN)
#define FRONT_RIGHT_B_RESET GPIO_ResetBits(FRONT_RIGHT_B_GPIO , FRONT_RIGHT_B_PIN)
#define BEHIND_LEFT_F_PIN GPIO_Pin_6
#define BEHIND_LEFT_F_GPIO GPIOD
#define BEHIND_LEFT_F_SET GPIO_SetBits(BEHIND_LEFT_F_GPIO , BEHIND_LEFT_F_PIN)
#define BEHIND_LEFT_F_RESET GPIO_ResetBits(BEHIND_LEFT_F_GPIO , BEHIND_LEFT_F_PIN)
#define BEHIND_LEFT_B_PIN GPIO_Pin_9
#define BEHIND_LEFT_B_GPIO GPIOG
#define BEHIND_LEFT_B_SET GPIO_SetBits(BEHIND_LEFT_B_GPIO , BEHIND_LEFT_B_PIN)
#define BEHIND_LEFT_B_RESET GPIO_ResetBits(BEHIND_LEFT_B_GPIO , BEHIND_LEFT_B_PIN)
#define BEHIND_RIGHT_F_PIN GPIO_Pin_4
#define BEHIND_RIGHT_F_GPIO GPIOD
#define BEHIND_RIGHT_F_SET GPIO_SetBits(BEHIND_RIGHT_F_GPIO , BEHIND_RIGHT_F_PIN)
#define BEHIND_RIGHT_F_RESET GPIO_ResetBits(BEHIND_RIGHT_F_GPIO , BEHIND_RIGHT_F_PIN)
#define BEHIND_RIGHT_B_PIN GPIO_Pin_2
#define BEHIND_RIGHT_B_GPIO GPIOD
#define BEHIND_RIGHT_B_SET GPIO_SetBits(BEHIND_RIGHT_B_GPIO , BEHIND_RIGHT_B_PIN)
#define BEHIND_RIGHT_B_RESET GPIO_ResetBits(BEHIND_RIGHT_B_GPIO , BEHIND_RIGHT_B_PIN)
//全局变量定义
unsigned int speed_count=0;//占空比计数器 50次一周期
char front_left_speed_duty=SPEED_DUTY;
char front_right_speed_duty=SPEED_DUTY;
char behind_left_speed_duty=SPEED_DUTY;
char behind_right_speed_duty=SPEED_DUTY;
#define SPEED_DUTY 40//默认占空比 按1ms最小分辨率 周期50ms计算
|
|