#define Aout PBout(11)
#define Bout PAout(5)
#define Cout PAout(6)
#define Dout PAout(7)
void Walkmotor_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口时钟
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; // 端口配置
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; // 端口配置
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOA
GPIO_ResetBits(GPIOB,GPIO_Pin_11);
GPIO_ResetBits(GPIOA, GPIO_Pin_5| GPIO_Pin_6 | GPIO_Pin_7);
}
void Walkmotor_ON(void) //步进电机旋转90度
{
int i;
for(i=0; i<128; i++)
{
Aout=1;Bout=0;Cout=0;Dout=0;delay_ms(3);
Aout=0;Bout=1;Cout=0;Dout=0;delay_ms(3);
Aout=0;Bout=0;Cout=1;Dout=0;delay_ms(3);
Aout=0;Bout=0;Cout=0;Dout=1;delay_ms(3);
}Aout=0;Bout=0;Cout=0;Dout=0;
}
该步进电机的步距角是5.625/64
控制器是8细分的,就是需要8个脉冲走完5.625度
请问
1.这是通过什么方法使步进电机旋转的?
2.单片机IO口输出高/低电平,一次for循环代表的是什么意思?
你是用的uln2003的驱动板吧。这种驱动电机的方式就是通过产生高速的电位时序差,来驱动电机的运行,比如 A>b>c>d>a 这样重复来驱动电机。
Walkmotor_ON,这个是需要在其它地方调用的。
https://wenku.baidu.com/view/c37827c458f5f61fb7366693.html