【STM32模块教程】-28BYJ-48步进电机
发布时间:2026/9/4 8:04:28 锦皓数字建站

我们不做一锤子买卖只做技术成长的长期伙伴源码获取链接再后面目录一、模块介绍以及常用方案1.模块实物图2.模块介绍3.常用方案二、引脚图以及原理图快速绘制技巧视频教程三、模块的引脚连接以及代码讲解与移植1、引脚功能以及与单片机连接和代码讲解2、模块实例工程代码讲解源码获取一、模块介绍以及常用方案1.模块实物图2.模块介绍部分资料标注湿度20%-95%温度0-50℃。小板PCB尺寸3.2cm * 1.4cm3.常用方案基于STM32的智能窗户基于单片机的智能停车场的设计与实现基于物联网技术的智能衣架二、引脚图以及原理图快速绘制技巧视频教程28BYJ-48步进电机提示:在嘉立创库中能找到的器件都不需要自己画!三、模块的引脚连接以及代码讲解与移植1、引脚功能以及与单片机连接和代码讲解单片机型号STM32F103C8T6模块型号28BYJ-48步进电机驱动芯片ULN2003达林顿驱动芯片模块引脚号单片机引脚号单片机引脚功能IN1PB15输出高低电平IN2PB14输出高低电平IN3PB13输出高低电平IN4PB12输出高低电平VCC5V供电GNDGND供地2、模块实例工程代码讲解STEPMOTOR.c文件#include STEPMOTOR.h u32 step[8] {0x0008,0x0018,0x0010,0x0030,0x0020,0x0060,0x0040}; /* 步进电机初始化 */ void stepmotor_init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; //对应IN1-IN4四条脉冲信号线 GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;//推挽输出 GPIO_Init(GPIOB, GPIO_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); } /* 停止电机 */ void MotorStop(void) { ENA0; ENB0; ENC0; END0; } /* 电机顺时钟转动 */ void MotorCW(u16 SPEED,u16 STEP) { unsigned short i; while(STEP--) { for(i0; i4; i) { ENA1; ENB0; ENC0; END0; delay_us(SPEED); ENA1; ENB1; ENC0; END0; delay_us(SPEED); ENA0; ENB1; ENC0; END0; delay_us(SPEED); ENA0; ENB1; ENC1; END0; delay_us(SPEED); ENA0; ENB0; ENC1; END0; delay_us(SPEED); ENA0; ENB0; ENC1; END1; delay_us(SPEED); ENA0; ENB0; ENC0; END1; delay_us(SPEED); ENA1; ENB0; ENC0; END1; delay_us(SPEED); } } } /* 电机逆时钟转动 */ void MotorCCW(u16 SPEED,u16 STEP) { unsigned short i; while(STEP--) { for(i0; i4; i) { ENA0; ENB0; ENC0; END1; delay_us(SPEED); ENA0; ENB0; ENC1; END1; delay_us(SPEED); ENA0; ENB0; ENC1; END0; delay_us(SPEED); ENA0; ENB1; ENC1; END0; delay_us(SPEED); ENA0; ENB1; ENC0; END0; delay_us(SPEED); ENA1; ENB1; ENC0; END0; delay_us(SPEED); ENA1; ENB0; ENC0; END0; delay_us(SPEED); ENA1; ENB0; ENC0; END1; delay_us(SPEED); } } } #include STEPMOTOR.h u32 step[8] {0x0008,0x0018,0x0010,0x0030,0x0020,0x0060,0x0040}; /* 步进电机初始化 */ void stepmotor_init() { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; //对应IN1-IN4四条脉冲信号线 GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP;//推挽输出 GPIO_Init(GPIOB, GPIO_InitStructure); GPIO_ResetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15); } /* 停止电机 */ void MotorStop(void) { ENA0; ENB0; ENC0; END0; } /* 电机顺时钟转动 */ void MotorCW(u16 SPEED,u16 STEP) { unsigned short i; while(STEP--) { for(i0; i4; i) { ENA1; ENB0; ENC0; END0; delay_us(SPEED); ENA1; ENB1; ENC0; END0; delay_us(SPEED); ENA0; ENB1; ENC0; END0; delay_us(SPEED); ENA0; ENB1; ENC1; END0; delay_us(SPEED); ENA0; ENB0; ENC1; END0; delay_us(SPEED); ENA0; ENB0; ENC1; END1; delay_us(SPEED); ENA0; ENB0; ENC0; END1; delay_us(SPEED); ENA1; ENB0; ENC0; END1; delay_us(SPEED); } } } /* 电机逆时钟转动 */ void MotorCCW(u16 SPEED,u16 STEP) { unsigned short i; while(STEP--) { for(i0; i4; i) { ENA0; ENB0; ENC0; END1; delay_us(SPEED); ENA0; ENB0; ENC1; END1; delay_us(SPEED); ENA0; ENB0; ENC1; END0; delay_us(SPEED); ENA0; ENB1; ENC1; END0; delay_us(SPEED); ENA0; ENB1; ENC0; END0; delay_us(SPEED); ENA1; ENB1; ENC0; END0; delay_us(SPEED); ENA1; ENB0; ENC0; END0; delay_us(SPEED); ENA1; ENB0; ENC0; END1; delay_us(SPEED); } } }STEPMOTOR.h文件#ifndef __STEPMOTOR_H #define __STEPMOTOR_H #include sys.h #include delay.h #define ENA PBout(12) #define ENB PBout(13) #define ENC PBout(14) #define END PBout(15) void stepmotor_init(void); void MotorStop(void); void MotorCW(u16 SPEED,u16 STEP); void MotorCCW(u16 SPEED,u16 STEP); #endifmain文件#include stm32f10x.h // Device header #include delay.h #include lcd.h #include timer.h #include stdbool.h #include STEPMOTOR.h int main (void) { int i 0; int count 1;/* 方向标志 */ delay_init(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); stepmotor_init();/* 步进电机初始化 */ OLED_Init();/* OLED屏初始化 */ delay_ms(1);/* 等待稳定 */ OLED_Clear(); while(1) { OLED_ShowCH(0,6,(u8* ) 公众号获取资料 ); OLED_ShowCH(0,2,(u8* )状态: ); if(count 1){ /* 左转3圈 */ OLED_ShowCH(48,2,(u8* )左转); for(i 0;i 3;i){ MotorCW(1200,130); MotorStop(); } count 0; }else{ /* 右转3圈 */ OLED_ShowCH(48,2,(u8* )右转); for(i 0;i 3;i){ MotorCCW(1200,130); MotorStop(); } count 1; } } }源码获取
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。