STM32F103+L298N驱动直流电机

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM32F103+L298N驱动直流电机

#ifndef __MOTOR_H

#define __MOTOR_H

#include "stm32f10x.h"

#define A1_On GPIO_SetBits(GPIOE,GPIO_Pin_0)

#define A1_Off GPIO_ResetBits(GPIOE,GPIO_Pin_0)

#define A2_On GPIO_SetBits(GPIOE,GPIO_Pin_2)

#define A2_Off GPIO_ResetBits(GPIOE,GPIO_Pin_2)

#define B1_On GPIO_SetBits(GPIOE,GPIO_Pin_4)

#define B1_Off GPIO_ResetBits(GPIOE,GPIO_Pin_4)

#define B2_On GPIO_SetBits(GPIOE,GPIO_Pin_6)

#define B2_Off GPIO_ResetBits(GPIOE,GPIO_Pin_6)

void Motor_Init(void); //控制引脚设置

void Motor_Forward(void); //前进

void Motor_Back(void); //后退

void Motor_Stop(void); //暂停

void Motor_TurnRight(void); //右转弯

void Motor_TurnLeft(void); //左转弯

#endif

#include "Motor.h"

void Motor_Init(void)

{

GPIO_InitTypeDef GPIO_Initstructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);

GPIO_Initstructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_4|GPIO_Pin_6; GPIO_Initstructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Initstructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOE,&GPIO_Initstructure);

}

void Motor_Forward(void)

{

A1_On;

A2_Off;

B1_On;

B2_Off;

}

void Motor_Back(void)

{

A1_Off;

A2_On;

B1_Off;

B2_On;

}

void Motor_Stop(void)

{

A1_Off;

A2_Off;

B1_Off;

B2_Off;

}

void Motor_TurnRight(void)

{

A1_On;

A2_Off;

B1_Off;

B2_Off;

}

void Motor_TurnLeft(void)

{

A1_Off;

A2_Off;

B1_Off;

B2_On;

}

#include "Motor.h"

#include "sys.h"

void Delay_ms(uint32_t ms) //利用系统SysTick延时{

uint32_t i;

SysTick_Config(72000);

for(i=0;i

{

while(!((SysTick->CTRL)&(1<<16)));

}

SysTick->CTRL&=SysTick_CTRL_ENABLE_Msk; }

int main(void)

{

Motor_Init();

while(1)

{

Motor_Forward();

Delay_ms(5000);

Motor_Stop();

Delay_ms(2000);

Motor_Back();

Delay_ms(5000);

Motor_Stop();

Delay_ms(2000);

Motor_TurnRight();

Delay_ms(5000);

Motor_Stop();

Delay_ms(2000);

Motor_TurnLeft();

Motor_Stop();

Delay_ms(2000);

}

}

网上很多关于L298N(我用的是可以驱动两路直流电机的模块)的说明文档可以查找,这里就不上接线图了。不过关于L298驱动电压12V的事情到可以对我的做法做个说明,我是用STM32开发板的输出5V接入L298的逻辑接口和驱动接口的,这样驱动两路电机完全没有问题,同样在Arduino中也可以将输出5V接L298的逻辑及驱动接线口。如果开发板或者采用Arduino 板,其实不用用电池盒装5或者7号电池,直接用手机充电板供电也非常好的。

相关文档
最新文档