STM32
直播中

王飞云

8年用户 1579经验值
私信 关注
[问答]

分享一个不错的STM32F103ZET6+28BYJ-48+ULN2003控制程序

分享一个不错的STM32F103ZET6+28BYJ-48+ULN2003控制程序

回帖(1)

张霞

2021-12-22 11:02:22
单片机: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);
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分