微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 请教怎么驱动步进电机转起来

请教怎么驱动步进电机转起来

时间:10-02 整理:3721RD 点击:
买下电机后只有51的代码 然后改成了STM32的(实际上我并不懂原理)
但是下载进去后没一点 反应 想找一个人请教!
int16_t phasecw[4] = {0x0001,0x0002,0x0004,0x0008};
int16_t phaseccw[4] = {0x0008,0x0004,0x0002,0x0001};

void Moto_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;//定义结构体
__GPIOC_CLK_ENABLE();//设置时钟
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;

GPIO_InitStruct.Pin = GPIO_PIN_0;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET);

GPIO_InitStruct.Pin = GPIO_PIN_1;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_SET);

GPIO_InitStruct.Pin = GPIO_PIN_2;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET);


GPIO_InitStruct.Pin = GPIO_PIN_3;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET);
}

static void MotorCW(void)
{
int8_t i;
for(i=0;i<4;i++)
{
GPIOC->ODR |= phasecw;
HAL_Delay(4);
}
}
static void MotorStop(void)
{
GPIOC->ODR |= 0x0000;
}
int main(void)
{
HAL_Init();
SystemClock_Config();
HAL_Delay(50);
while(1)
{
int8_t i;
for(i=0;i<500;i++)
MotorCW();
MotorStop();
}
}


由于我还是一个大一的小白,求轻喷。
实在没办法了,不知道错在哪里

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top