新手入门
- 积分
- 3
- 金钱
- 3
- 注册时间
- 2023-7-11
- 在线时间
- 0 小时
|
4金钱
本帖最后由 joyluner 于 2023-7-11 22:39 编辑
我在看完野火电机系列中的步进电机梯形加减速例程后,想用一个定时器的四个通道 输出比较 去控制四个步进电机梯形加减速。
用串口发送命令,执行 电机以给定的加速度、减速度、最大加速度 转动给定的步数。这只是开始,具体原理是,先用stepper_move_T()函数计算本次转动的参数,包括达到最大速度的步数、开始减速的步数等参数,第一次设置对应定时器通道的比较值。
之后就疯狂进入定时器输出比较的中断,每进两次中断输出完整的脉冲后就计算下一次中断的间隔时间,然后把这个间隔写进定时器通道的比较值。除了中间的匀速过程,加速和减速期间的比较值经常要改,从而实现了步进电机的加减速。
我的问题是,
1. TIM3定时器的通道开了两个及以上后,其通道一输出的PWM波很稳定地丢步,是指发送转5圈但实际离五圈还差个几十度。但只开一个通道就没问题,我试着TIM3只开通道一,再加TIM2的通道二,还是会发生很稳定的丢步,感觉是哪里处理速度不够,但说不上来;
2. 假如我开了TIM3的通道一和通道二 输出比较 ,除了通道一会稳定丢步以外,通道二输出的速度非常缓慢,还停不下来。
我怀疑是定时器和通道配置出了问题,我用的是CubeMX配置的,大家能帮我看看吗
附上源文件,用的F103精英板,求求大神帮忙看看
|
|