黄工无刷电机学习
直播中

王尚岱

8年用户 1508经验值
擅长:电源/新能源
私信 关注
[问答]

STM32是如何实现电机的正反转呢

STM32是如何实现电机的正反转呢?怎样去编写其代码?

回帖(1)

李明

2021-9-23 15:05:27
  今天是做小车过程中的第二天,今天写一下单纯的实现电机的正反转。(但是还是不会实现PWM调速)代码如下:
  /***********************************************/
  .H 代码
  #ifndef __MOTOR1_H
  #define __MOTOR1_H
  #include “stm32f10x.h”
  //#include “stm32f10x_gpio.h”
  #define High 1 //宏定义 高为1
  #define Low 0 //宏定义 低为0
  #define IN1(a) if (a)
  GPIO_SetBits(GPIOA,GPIO_Pin_4); //如果真 IN1 为高电平(PA4)
  else
  GPIO_ResetBits(GPIOA,GPIO_Pin_4) // 否则为低电平 (PA4)
  #define IN2(a) if (a)
  GPIO_SetBits(GPIOA,GPIO_Pin_5);
  else
  GPIO_ResetBits(GPIOA,GPIO_Pin_5)
  otor_1_Config(void);
  void Motor_1_STOP(void); //停止
  void Motor_1_PRun(void); //正转
  void Motor_1_NRun(void); //反转
  #endif
  下面是.c代码
  #include “motor.h”
  #include “stm32f10x.h”
  #include “delay.h”
  void Motor_1_Config(void)
  {
  GPIO_InitTypeDef GPIO_InitStruct;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//用GPIOA时钟
  GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
  GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5;
  GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOA,&GPIO_InitStruct);
  GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5);
  }
  void Motor_1_STOP(void)
  {
  IN1(High);
  IN2(High);
  }
  void Motor_1_PRun(void)
  {
  IN1(Low);
  IN2(High);
  }
  void Motor_1_NRun(void)
  {
  IN1(High);
  IN2(Low);
  }
  下面是主函数
  int main(void)
  {
  Motor_1_Config();
  delay_init();
  while(1)
  {
  Motor_1_PRun(); //正转
  delay_ms(2000); //延迟2秒
  Motor_1_NRun(); //反转
  delay_ms(2000); //延迟2秒
  Motor_1_STOP(); //停止
  delay_ms(2000);
  }
  }
举报

更多回帖

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