https://blog.csdn.net/a568713197/article/details/89070265
鸟哥,你可以看一下这篇博文。
手册上的描述比较简单。
相关代码的话可以参考野火的电机程序,步进电机S形加减速这部分。
https://doc.embedfire.com/motor/motor_tutorial/zh/latest/improve_part/step_motor_S_speed.html
他的驱动程序我也贴上来。
stepper—S形加减速实现.zip
(7.56 MB)
在bsp_stepper_init.c中的MOTOR_PUL_IRQHandler是它的中断服务函数。
中断服务函数中进行速度决策。
if(__HAL_TIM_GET_IT_SOURCE(&TIM_TimeBaseStructure, MOTOR_TIM_IT_CCx) !=RESET)
这句话就是判断是否为比较中断。
然后在比较中断中,根据加减速速度表(其实就是PWM的频率表),来改变频率。然后读取CNT值,根据现在频率计算出下一次进入比较中断的时间。
赋值给CCP寄存器,然后下一次当CNT等于CCP值的时候又可以进入到这个中断。
然后不停的在中断中进行速度决策,就可以让步进电机的速度变成S形。
|
支持的,看手册