OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3599|回复: 2

STM32控制l298n的问题

[复制链接]

3

主题

9

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-8-12
在线时间
5 小时
发表于 2018-8-12 13:37:40 | 显示全部楼层 |阅读模式
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计算

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

9

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2018-8-12
在线时间
5 小时
 楼主| 发表于 2018-8-12 17:03:36 | 显示全部楼层
front_left_speed_duty=SPEED_DUTY;
        front_right_speed_duty=SPEED_DUTY;
        behind_left_speed_duty=SPEED_DUTY;
        behind_right_speed_duty=SPEED_DUTY;
这几行代码是什么意思呢谁能告诉我一下
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2019-8-13
在线时间
9 小时
发表于 2019-9-4 17:42:45 | 显示全部楼层
保温杯里泡枸杞 发表于 2018-8-12 17:03
front_left_speed_duty=SPEED_DUTY;
        front_right_speed_duty=SPEED_DUTY;
        behind_left_s ...

楼主解决了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-11 10:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表