标题:
用MINI版STM32驱动步进电机遇到了问题
[打印本页]
作者:
mim123
时间:
2018-12-9 13:36
标题:
用MINI版STM32驱动步进电机遇到了问题
在控制步进电机的过程中,实现步进电机的正传---停止---反转---停止过程,本想实现一次该过程,但每次都执行了三次。
```
int main(void)
{
delay_init(); //延时函数初始化
Moto_Init();
LED_Init();
int j=0;
int k=0;
for(k=0;k<500;k++)
{
Motorcw(); //电机正传
}
MotorStop();
delay_ms(5000);
for(j=0;j<500;j++)
{
Motorccw(); //电机反传
}
MotorStop();
delay_ms(5000);
}
```
请大佬指点。
作者:
nikola
时间:
2018-12-9 21:17
能说明一下电机正转和电机反转的函数具体是怎么编写的吗?
作者:
mim123
时间:
2018-12-10 22:18
nikola 发表于 2018-12-9 21:17
能说明一下电机正转和电机反转的函数具体是怎么编写的吗?
#include "moto.h"
#include "delay.h"
#include "led.h"
//步进电机相关IO口初始化
// IN4: PC13
// IN3: PC0
// IN2: PC2
// IN2: PC2
//相序
uint16_t phasecw[4] ={0x2000,0x0001,0x0004,0x0008};// D-C-B-A 电机正传
uint16_t phaseccw[4]={0x0008,0x0004,0x0001,0x2000};// A-B-C-D 电机反转
//IO口初始化
void Moto_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; // IN4: PC13
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz速率
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_ResetBits(GPIOC,GPIO_Pin_13); //输出低电平
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // IN3: PC0
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_ResetBits(GPIOC,GPIO_Pin_0);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; // IN2: PC2
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_ResetBits(GPIOC,GPIO_Pin_2);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; // IN2: PC2
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_ResetBits(GPIOC,GPIO_Pin_3);
}
//电机正转
void Motorcw(void)
{
uint8_t i;
for(i=0;i<4;i++)
{
GPIO_Write(GPIOC,phasecw
);
delay_ms(3); //最快速度
}
}
//电机反转
void Motorccw(void)
{
uint8_t i;
for(i=0;i<4;i++)
{
GPIO_Write(GPIOC,phaseccw
);
delay_ms(3);
}
}
//电机停止
void MotorStop(void)
{
GPIO_Write(GPIOC,0x0000);
}
作者:
DVIN
时间:
2020-1-7 18:40
你那个循环就是执行了三次啊,单纯循环去了,i没有传到数组下标里。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1