STM32(HAL)通过UN2003芯片驱动步进电机正反转

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: STM32(HAL)通过UN2003芯片驱动步进电机正反转

1、简介

STM32F103C8T6单片机(HAL库方式)通过UN2003芯片对步进电机进行正反转控制。


2、Cubemax配置

2.1 RCC配置


c9f48da3ca464cce96486a17c0e55086.png


2.2 SYS配置


4603c93b99aa41b8b5f234b85b5f6221.png


2.3 GPIO配置


7b95ee2108d1460fa1738c8d727b1361.png


2.4 生成文件


42db608aada144178928c8151415bb74.png

2a1dc9f16fc24a249cd81eeb86d724b8.png


3、硬件连接

IN1---PB15


IN2---PB14


IN3---PB13


IN4----PB12


+5V---5V


GND---GND


4、keil端代码整合

4.1 宏定义


e20eca602062432aac2563e1852b5793.png


#define LD_ON HAL_GPIO_WritePin(LD_GPIO_Port, LD_Pin, GPIO_PIN_SET)
#define LD_OFF HAL_GPIO_WritePin(LD_GPIO_Port, LD_Pin, GPIO_PIN_RESET)
#define LC_ON HAL_GPIO_WritePin(LC_GPIO_Port, LC_Pin, GPIO_PIN_SET)
#define LC_OFF HAL_GPIO_WritePin(LC_GPIO_Port, LC_Pin, GPIO_PIN_RESET)
#define LB_ON HAL_GPIO_WritePin(LB_GPIO_Port, LB_Pin, GPIO_PIN_SET)
#define LB_OFF HAL_GPIO_WritePin(LB_GPIO_Port, LB_Pin, GPIO_PIN_RESET)
#define LA_ON HAL_GPIO_WritePin(LA_GPIO_Port, LA_Pin, GPIO_PIN_SET)
#define LA_OFF HAL_GPIO_WritePin(LA_GPIO_Port, LA_Pin, GPIO_PIN_RESET)

4.2 添加fun.c func.h

func.h

#ifndef FUNC_FUNC_H_
#define FUNC_FUNC_H_
#include "main.h"
#define time 24000
void anticlockwise(void);
void clockwise(void);
#endif /* FUNC_FUNC_H_ */

func.c

#include "func.h"
uint32_t free_time_delay;
void anticlockwise()
{
   //D4-LD
    //D5-LC
    //D6-LB
    //D7-LA
  LD_ON;
  //1
  free_time_delay = time; while(--free_time_delay>0);
  LC_ON;
  //2
  free_time_delay = time; while(--free_time_delay>0);
  LD_OFF;
  //3
  free_time_delay = time; while(--free_time_delay>0);
  LB_ON;
  //4
  free_time_delay = time; while(--free_time_delay>0);
  LC_OFF;
  //5
  free_time_delay = time; while(--free_time_delay>0);
  LA_ON;;
  //6
  free_time_delay = time; while(--free_time_delay>0);
  LB_OFF;
  //7
  free_time_delay = time; while(--free_time_delay>0);
  LD_ON;
  //8
  free_time_delay = time; while(--free_time_delay>0);
  LA_OFF;
}
void clockwise()
{
   LA_ON;
  //1
  free_time_delay = time; while(--free_time_delay>0);
  LB_ON;
  //2
  free_time_delay = time; while(--free_time_delay>0);
  LA_OFF;
  //3
  free_time_delay = time; while(--free_time_delay>0);
  LC_ON;
  //4
  free_time_delay = time; while(--free_time_delay>0);
  LB_OFF;
  //5
  free_time_delay = time; while(--free_time_delay>0);
  LD_ON;;
  //6
  free_time_delay = time; while(--free_time_delay>0);
  LC_OFF;
  //7
  free_time_delay = time; while(--free_time_delay>0);
  LA_ON;
  //8
  free_time_delay = time; while(--free_time_delay>0);
  LD_OFF;
}

main.c

while (1)
  {
    clockwise();//正
    HAL_Delay(5000);
    anticlockwise();//反
    HAL_Delay(5000);
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
|
3月前
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
54 14
|
3月前
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
98 13
|
3月前
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
51 10
|
3月前
STM32CubeMX EC11旋转编码器驱动
STM32CubeMX EC11旋转编码器驱动
84 10
|
3月前
STM32CubeMX OLED驱动
STM32CubeMX OLED驱动
53 10
|
3月前
|
芯片
STM32CubeMX TM1637驱动数码管
STM32CubeMX TM1637驱动数码管
54 6
|
3月前
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
88 1
|
3月前
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
34 0
|
3月前
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
67 0