STM32F103ZET6+28BYJ-48+ULN2003控制程序

单片机: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);
}

详细程序请参考[工程文件下载地址]:(https://download.csdn.net/download/kekebb/16208040)

你可能感兴趣的:(电机控制,stm32)