高中生
最后登录1970-1-1
在线时间 小时
注册时间2016-1-18
|
小弟最近刚学stm32,最近在尝试驱动步进电机,用的是ULN2003驱动模块和28byj48步进电机,驱动模块外接了5V的电压。
在网上看的资料或者代码都是大同小异的,但是下载程序之后步进电机只是里面在嗡嗡地响,并没有转动,尝试了很多方法都没有解决
不知道是不是驱动模块的电压不够,还是什么情况,故在此发一帖求教各位大神,代码如下:
/***stepmotor.h***/
#include "stm32f10x.h"
void SM_GPIO_Config(void);
void run(uint32_t circle);
#define IN1 GPIO_Pin_0
#define IN2 GPIO_Pin_1
#define IN3 GPIO_Pin_2
#define IN4 GPIO_Pin_3
/***stepmotor.c***/
#include "stepmotor.h"
//8,12,4,6,2,3,1,9
void SM_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin =IN1;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=IN2;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin =IN3;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin =IN4;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_ResetBits(GPIOC,IN1|IN2|IN3|IN4);
}
void delay(uint32_t i)
{
uint32_t j;
for(j=0;j<i;j++);
}
void run(uint32_t circle)
{
uint32_t i;
for(i=0;i<circle;i++)
{
GPIO_Write(GPIOC,8);
delay(200);
GPIO_Write(GPIOC,12);
delay(200);
GPIO_Write(GPIOC,4);
delay(200);
GPIO_Write(GPIOC,6);
delay(200);
GPIO_Write(GPIOC,2);
delay(200);
GPIO_Write(GPIOC,3);
delay(200);
GPIO_Write(GPIOC,1);
delay(200);
GPIO_Write(GPIOC,9);
delay(200);
}
}
/***main.c***/
#include "stm32f10x.h"
#include "stepmotor.h"
int main()
{
SM_GPIO_Config();
while(1)
{
run(1000);
}
}
|
|