问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一文掌握STM32CubeMX配置PWM控制步进电机

创作时间:
2025-01-22 08:32:26
作者:
@小白创作中心

一文掌握STM32CubeMX配置PWM控制步进电机

STM32CubeMX是ST公司推出的一款图形化配置工具,可以帮助开发者快速配置STM32微控制器的外设和时钟。本文将详细介绍如何使用STM32CubeMX配置PWM输出以控制步进电机,包括系统时钟配置、定时器配置、引脚配置等具体操作,并提供完整的代码示例。

CubeMX配置步骤

  1. 打开CubeMX并选择自己的芯片版本

  2. 系统时钟(RCC)选择外部晶振(Crystal/Ceramic Resonator)


  1. 配置时钟

  1. 配置定时器为PWM输出模式,根据上一步配置的时钟频率72MHz设置预分频系数为18-1,设置计数周期为500-1。根据公式:PWM输出频率 = 定时器时钟频率 ÷ ((预分频系数+1) × (计数周期 + 1))计算得到,PWM输出频率为8kHz。

  1. 设置PWM输出引脚,此处使用默认的PA15引脚

  2. 电机转动方向引脚配置,此处配置为PF8,配置输出电平为高(high),开漏输出(Output Open Drain),上拉(Pull-up)。

  3. 项目生成配置,注意保存路径不要有中文

  1. 设置只拷贝使用到的库,分离.c和.h文件,然后生成代码完成CubeMX的配置。

代码实现

  1. 打开main函数配置如下代码,实现三秒正转,三秒反转
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM2_Init();
  /* USER CODE BEGIN 2 */
    
    __HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_1, 50); //修改占空比=50/计数周期(499)+1
    HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);	     //使能TIM2的PWM CHANNEL_1输出
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
        HAL_GPIO_WritePin(GPIOF, GPIO_PIN_8, 1); //电机正转
        HAL_Delay(3000);
        HAL_GPIO_WritePin(GPIOF, GPIO_PIN_8, 0); //电机反转
        HAL_Delay(3000);
        
  }
  /* USER CODE END 3 */
}
  1. 实验发现直接使用PF8引脚输出3.3V信号无法控制电机正反转(因为控制器需要5V信号驱动电机),采用外部上拉实现5V输出,此时需配置引脚为开漏输出且查看datasheet芯片手册tIO口号是否带有FT标识。必须带有FT标识才能通过开漏输出加外部上拉输出5V电平。外部上拉原理如下图所示。

  2. 实物连接图及运行视频

STM32控制步进电机转动

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号