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

零基础使用STM32CubeMX配置PWM输出控制步进电机

创作时间:
作者:
@小白创作中心

零基础使用STM32CubeMX配置PWM输出控制步进电机

引用
CSDN
1.
https://blog.csdn.net/weixin_54221349/article/details/137514758

本文将详细介绍如何使用STM32CubeMX配置PWM输出以控制步进电机。通过本文,读者将学习到具体的配置步骤、代码实现以及实验中遇到的问题和解决方案。

CubeMX配置步骤

  1. 打开CubeMX并选择自己的芯片版本
  2. 系统时钟RCC选择外部晶振Crystal/Ceramic Resonator

  3. 配置时钟
  4. 配置定时器为PWM输出模式,根据上一步配置的时钟频率72MHZ设置预分频系数为18-1,设置计数周期为500-1。根据公式:PWM输出频率 = 定时器时钟频率 ÷ ((预分频系数+1) × (计数周期 + 1))计算得到,PWM输出频率为8khz。
  5. 设置PWM输出引脚,此处使用默认的PA15引脚
  6. 电机转动方向引脚配置,此处配置为PF8,配置输出电平为高high,开漏输出Output Open Drain,上拉Pull-up(很重要!!!!!!)。
  7. 项目生成配置,注意保存路径不要有中文
  8. 设置只拷贝使用到的库,分离.c和.h文件,然后生成代码完成CubeMX的配置。
  9. 打开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号