单片机:STM32F103ZET6,正点原子
步进电机:28BYJ-48
驱动电路:ULN2003芯片的驱动板
实现效果:按键KEY1控制电机正转,按键KEY0控制电机反转,电机运行时间速度 都为可调
motor.c
#include "motor.h"
#include "delay.h"
#include "led.h"
#define A1 GPIO_SetBits(GPIOC, GPIO_Pin_3);
#define A2 GPIO_ResetBits(GPIOC, GPIO_Pin_3);
#define B1 GPIO_SetBits(GPIOC, GPIO_Pin_4);
#define B2 GPIO_ResetBits(GPIOC, GPIO_Pin_4);
#define C1 GPIO_SetBits(GPIOC, GPIO_Pin_5);
#define C2 GPIO_ResetBits(GPIOC, GPIO_Pin_5);
#define D1 GPIO_SetBits(GPIOC, GPIO_Pin_6);
#define D2 GPIO_ResetBits(GPIOC, GPIO_Pin_6);
void motor_configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //PC.012 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据设定参数初始化GPIOC.5
GPIO_ResetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6); //PC.012 输出低
}
void motor_control_F(int n)
{
A1;
delay_ms(n);
A2;
B1;
delay_ms(n);
B2;
C1;
delay_ms(n);
C2;
D1;
delay_ms(n);
D2;
}
void motor_control_Z(int n)
{
A1;
delay_ms(n);
A2;
D1;
delay_ms(n);
D2;
C1;
delay_ms(n);
C2;
B1;
delay_ms(n);
B2;
}
void Motor_Ctrl_Off(void){
GPIO_ResetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);
}
单片机:STM32F103ZET6,正点原子
步进电机:28BYJ-48
驱动电路:ULN2003芯片的驱动板
实现效果:按键KEY1控制电机正转,按键KEY0控制电机反转,电机运行时间速度 都为可调
motor.c
#include "motor.h"
#include "delay.h"
#include "led.h"
#define A1 GPIO_SetBits(GPIOC, GPIO_Pin_3);
#define A2 GPIO_ResetBits(GPIOC, GPIO_Pin_3);
#define B1 GPIO_SetBits(GPIOC, GPIO_Pin_4);
#define B2 GPIO_ResetBits(GPIOC, GPIO_Pin_4);
#define C1 GPIO_SetBits(GPIOC, GPIO_Pin_5);
#define C2 GPIO_ResetBits(GPIOC, GPIO_Pin_5);
#define D1 GPIO_SetBits(GPIOC, GPIO_Pin_6);
#define D2 GPIO_ResetBits(GPIOC, GPIO_Pin_6);
void motor_configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //PC.012 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据设定参数初始化GPIOC.5
GPIO_ResetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6); //PC.012 输出低
}
void motor_control_F(int n)
{
A1;
delay_ms(n);
A2;
B1;
delay_ms(n);
B2;
C1;
delay_ms(n);
C2;
D1;
delay_ms(n);
D2;
}
void motor_control_Z(int n)
{
A1;
delay_ms(n);
A2;
D1;
delay_ms(n);
D2;
C1;
delay_ms(n);
C2;
B1;
delay_ms(n);
B2;
}
void Motor_Ctrl_Off(void){
GPIO_ResetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6);
}
举报