电子吧 关注:99,075贴子:476,673
  • 10回复贴,共1

STM32控制步进电机时,电机的最大速度会受到延时方法的影响吗?

只看楼主收藏回复

我用STM32来控制的四相步进电机,用四拍的方法来输出脉冲~用了两种方法来做每个拍之间的延时函数,一直是用最普通的延时方法
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
另一种是用系统的滴答时钟来做延时
void delay_ms(u16 nms)
{
u32 temp;
SysTick->LOAD=nms*9000;//时间加载(SysTick->LOAD为24bit)
SysTick->VAL =0x00; //清空计数器
SysTick->CTRL=0x01; //使能,减到0无动作,采用外部时钟
//开始倒数
do
{
temp=SysTick->CTRL;
} while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL=0x00; //关闭计数器
SysTick->VAL =0X00;//清空计数器
}
四拍输出的函数如下
void Car_Forward(void) //前进
{
u8 i;
for(i=0;i<4;i++)
{
GPIO_Write (GPIOD,Step_F[i]);
Delay(speed);
//delay_ms(speed);
}
}
发现用第一种方法来做延时电机能调到的最大的旋转速度要比用系统滴答时钟做的延时能调到的快得多,这是怎么一回事啊~~


1楼2013-07-31 15:54回复

    .★ * ★..
      .*★ *. *..*   ★
      ★ DY视觉传媒   ★
      ‘*. *'
         ‘★.    ★’
           ‘*..★


    来自Android客户端2楼2013-07-31 16:00
    回复
      2025-07-13 10:33:56
      广告
      太高级的不懂 ,,,好像运行的机器周期数不一样,多次执行,就会有积累


      3楼2013-07-31 16:25
      收起回复
        乘9000改小一点试试。系统的滴答略不准的。以前做的计时器,时间久了误差还是比较大的。就用第一种方案最好了。
           --春天的东京很美,樱花开的像潮水一样,风一吹,一夜之间就落了。我想有些事情是可以遗忘的,有些事情是可以纪念的,有些事情能够心甘情愿,有些事情一直无能为力。我爱你。这是我的劫难。我相信我爱你。依然。始终。永远。希望你幸福。


        IP属地:北京来自Android客户端4楼2013-07-31 20:32
        收起回复