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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月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 */
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
347 14
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
795 13
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
251 10
STM32CubeMX EC11旋转编码器驱动
STM32CubeMX EC11旋转编码器驱动
1391 10
STM32CubeMX OLED驱动
STM32CubeMX OLED驱动
270 10
|
芯片
STM32CubeMX TM1637驱动数码管
STM32CubeMX TM1637驱动数码管
941 6
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
1179 1
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
389 0
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
693 0
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
965 0