打造一个通用性MCU架构,支持CX32/AT32/NRF51/NRF52等。 OS支持RTX4/RTX5/FreeRtos。 采用VsCode+GCC组合,VsCode+KEIL5,超强开发方式。 QQ群:524408033

LiSun

打造一个通用性MCU架构,支持CX32/AT32/NRF51/NRF52等。 OS支持RTX4/RTX5/FreeRtos。 采用VsCode+GCC组合,VsCode+KEIL5,超强开发方式。 QQ群:524408033

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
/*************笔记****************
1、CubeMX 定义任意四个引脚,作为ABCD相,并对引脚作出如下配置:
   GPlO output level       --High
   GPIO mode               --Output Push Pull
   GPIO Pull-up/Pull-down  --No pull-up and no pull-down
   Maximum output speed    --LOW
   User label              --dianji_A/dianji_B/dianji_C/dianji_D
   ---------------------------------------------------------

2、本设计采用TTL输出(即高低电平)  低电平--停止  高电平--运行
   PB12---电机A相 信号脚
   PB13---电机B相 信号脚
   PB14---电机C相 信号脚
   PB15---电机D相 信号脚
3、
  正转 电机导通相序 D-C-B-A
  反转 电机导通相序 A-B-C-D
***********************************/
#include "Motor.h"
#include "cmsis_os.h"
#include "stm32f1xx_hal.h"

#define DJ_D(N) HAL_GPIO_WritePin(dianji_D_GPIO_Port,dianji_D_Pin,N==1?GPIO_PIN_SET:GPIO_PIN_RESET)
#define DJ_C(N) HAL_GPIO_WritePin(dianji_C_GPIO_Port,dianji_C_Pin,N==1?GPIO_PIN_SET:GPIO_PIN_RESET)
#define DJ_B(N) HAL_GPIO_WritePin(dianji_B_GPIO_Port,dianji_B_Pin,N==1?GPIO_PIN_SET:GPIO_PIN_RESET)
#define DJ_A(N) HAL_GPIO_WritePin(dianji_A_GPIO_Port,dianji_A_Pin,N==1?GPIO_PIN_SET:GPIO_PIN_RESET)
/******************
函数名:MotorCW
功能:顺时针转动
*******************/
void MotorCW(void)
{
    DJ_D(1);          //D相运行
    DJ_C(0);
    DJ_B(0);
    DJ_A(0);
    osDelay(4);      //转速调节

    DJ_D(0);
    DJ_C(1);          //C相运行
    DJ_B(0);
    DJ_A(0);
    osDelay(4);      //转速调节

    DJ_D(0);
    DJ_C(0);
    DJ_B(1);          //B相运行
    DJ_A(0);
    osDelay(4);      //转速调节

    DJ_D(0);
    DJ_C(0);
    DJ_B(0);
    DJ_A(1);          //A相运行
    osDelay(4);      //转速调节
}

/******************
函数名:MotorCCW
功能:逆时针转动
*******************/
void MotorCCW(void)
{
    DJ_A(1);
    DJ_B(0);
    DJ_C(0);
    DJ_D(0);
    osDelay(4);//转速调节
    DJ_A(0);
    DJ_B(1);
    DJ_C(0);
    DJ_D(0);
    osDelay(4);//转速调节
    DJ_A(0);
    DJ_B(0);
    DJ_C(1);
    DJ_D(0);
    osDelay(4);//转速调节
    DJ_A(0);
    DJ_B(0);
    DJ_C(0);
    DJ_D(1);
    osDelay(4);//转速调节
}
//停止转动
void MotorStop(void)
{
    DJ_D(0);
    DJ_C(0);
    DJ_B(0);
    DJ_A(0);
}

/******************
函数名:Open_Door
功能:利用马达模拟开门动作
形参:
返回值:
备注:
*******************/
void Open_Door(void)
{
    u8 i = 0;
    for(i=0;i<100;i++)
    {
        MotorCW();
        osDelay(10);
    }
}

#ifndef _MOTOR_H
#define _MOTOR_H
#include "main.h"
/*
PB12---电机A相信号脚
PB13---电机B相信号脚
PB14---电机C相信号脚
PB15---电机D相信号脚
*/


void MotorCW(void);
void MotorCCW(void);
void MotorStop(void);
void Open_Door(void);
#endif

ULN2003中文数据手册.pdf

步进电机驱动板原理图.pdf

posted on 2022-08-13 11:01  xuejianqiang  阅读(90)  评论(0编辑  收藏  举报
打造一个通用性MCU架构,支持CX32/AT32/NRF51/NRF52等。 OS支持RTX4/RTX5/FreeRtos。 采用VsCode+GCC组合,VsCode+KEIL5,超强开发方式。 QQ群:524408033