初级会员

- 积分
- 178
- 金钱
- 178
- 注册时间
- 2020-6-21
- 在线时间
- 70 小时
|
1金钱
我用PWM波控制步进电机 推 丝杆。
没有编码器
要做到的效果是 推到设置的最大距离就停下来。
我用TIM1发的脉冲,并且开启了TIM1的更新中断,每一次到CNT加到ARR就进入中断,在中断里面设置的一个标志位FLAG ++
然后在另外一个函数里面设置
if(FLAG > 1000)
{
停下来;
}
当然中间还有别的其他的很多代码..
然后我发现..中间的代码数量不一样..同样的丝杆距离,FALG的值也不一样...
中断开的太频繁了??
而且这个最大距离FALG值特别的玄幻...我设置的是u32的长度的..我设置的参数理论上转一圈就要800个脉冲了.
结果我推到最远的设置的距离,flag值只有500..
不过虽然玄幻,但是写好了,运行起来每次停的位置是不变的。。
我如果要改程序,在主函数里写一些别的代码...这个最远距离的flag值就要变了..
这是为什么啊??
代码如下
scmc就是设置的标志位,输出脉冲的意思。
|
|