STM32+A4988+步进电机实现电机控制
A4988电机驱动芯片参考:【STM32篇】4988驱动步进电机_hr4988-CSDN博客
PWM占空比计算:PWM公式总结_pwm频率计算公式-CSDN博客
一、STM32CubeMX配置
- RCC开启外部高速时钟(略)
- 配置STLink调试口(略)
- 配置串口方便调试输出(略)
- 配置工程名、生成路径,之后生成工程(略)
- 配置PWM,打开TIM1的PWM通道4,时钟频率为72MHZ,配置预分频数72-1,重装载值1000-1,预装载值500。1ms定时器 =(72 * 1000)/ 72M,PWM占空比 = 500 / 1000。
- 配置芯片使能脚PA10,转动方向脚PA9
二、代码编写
1、PWM相关函数
参考破站:[STM32 HAL库][定时器]呼吸灯实验,最佳教程,没有之一~_哔哩哔哩_bilibili
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); // 开启PWM
HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_4); // 关闭PWM__HAL_TIM_GET_PRESCALER(__HANDLE__); // 读PSC
__HAL_TIM_SET_PRESCALER(__HANDLE__, __VAL__) // 写PSC
__HAL_TIM_GET_COUNTER(__HANDLE__); // 读CNT
__HAL_TIM_SET_COUNTER(__HANDLE__,VAL); // 写CNT
__HAL_TIM_GET_AUTORELOAD(__HANDLE__); // 读 ARR
__HAL_TIM_SET_AUTORELOAD(__HANDLE__,VAL); // 写 ARR
__HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__); // 读CCR
__HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__);// 写CCR
2、修改main函数
在main函数初始化中加入HAL_TIM_PWM_Start()即可驱动电机转动,修改定时器的频率可控制电机的转动快慢。
注意:PWM的开启应在定时器初始化之后。
三、更多电机控制
源码中简单的实现:按角度旋转,按时间旋转,设置电机旋转速度,有需要的可以下载源码。
作者:决战嵌入式