基于stm32f103ZET6开发板驱动28BYJ-48步进电机
这里使用ULN2003驱动步进电机,所以只需要找到合适的IO口连接到驱动芯片的IN1~4脚即可,再通过IO口依次输出高电平再拉低即可完成驱动
本代码使用的是PA0~3,依次连接的是IN1-4,如果更改成其他IO口则只需要修改对应的IO初始化函数。
BSP_GPIO.h头文件(名字随便取的,不要在意)
#ifndef __BSP_GPIO_H
#define __BSP_GPIO_H
#include "sys.h"
#include "delay.h"
void Motor_GPIOInit (void); //GPIO初始化函数
void Motor_CW(void); //步进电机测试函数,逆时针转动
void SysTick_Delay_Ms(__IO uint32_t ); //滴答定时器
void Motor_SW(void); //步进电机测试函数,顺时针转动
void Motor_ctrl_angle(int dire ,int angle); //dire:0:顺时针,1:逆时针;angle:控制转动角度
void Motor_ctrl_motor(int dire,float cycle); //这里只是把上一个函数的转动角度转化成转动周期
void MotorStop(void); //停止转动
#endif
头文件里定义了有关步进电机使用的所有驱动函数申明
下面是BSP_GPIO.c文件
. 在这里实现所有函数
#include "bsp_gpio.h"
#include "stm32f10x.h"
u32 DELAY_TIME =