STM32F103+L298N驱动直流电机
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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号电池,直接用手机充电板供电也非常好的。