本帖最后由 八块腹肌233 于 2019-2-21 22:14 编辑
头文件程序如下:#ifndef __CHUMI_H
#define __CHUMI_H
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
u8 upstep8_table[]={0x08,0x0a,0x02,0x06,0x04,0x05,0x01,0x09}; //Õy×aË3Dò±í
//u8 downstep8_table[]={0x04,0x06,0x02,0x0a,0x08,0x09,0x01,0x05}; //Äæ×aË3Dò±í
extern struct rice rice_info;
int chumi(struct rice rice_info); //¸oÔe3öÃ×
void motor_pin_init(); //3õê¼»ˉμç»úòy½Å
void SetMotor(unsigned char InputData); //éèÖμμç»úòy½Åμçƽ
#endif
.c文件如下:
#include "test.h"
void motor_pin_init()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void SetMotor(unsigned char InputData)
{
if(InputData&0x01)
{
GPIO_SetBits(GPIOB,GPIO_Pin_0);
// delay_ms(20000);
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}
if(InputData&0x02)
{
GPIO_SetBits(GPIOB,GPIO_Pin_1);
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
}
if(InputData&0x04)
{
GPIO_SetBits(GPIOB,GPIO_Pin_2);
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_2);
}
if(InputData&0x08)
{
GPIO_SetBits(GPIOB,GPIO_Pin_3);
}
else
{
GPIO_ResetBits(GPIOB,GPIO_Pin_3);
}
}
void motorNcircle(int n,int position)
{
int i,j,k=0;
for(j=0;j<n;j++)
{
//for(i=0;i<64*8;i++)
for(i=0;i<8;i++)
{
for(k=0;k<8;k++)
{
if(1 == position)
{
SetMotor(upstep8_table[k]);
}
// else
// {
// SetMotor(downstep8_table[k]);
// }
delay_ms(2);
}
}
}
}
我感觉软件部分应该没什么问题,就是会不会是电压的不稳定导致步进电机无法正常运转,但不知道为什么会电压不稳定,求各位大佬帮忙看看。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
先不要用升压模块供电试试,弄个开关电源先让电机正常跑起来
用的IO口直接控制的,用示波器看了298的四个输出通道,信号都不稳定,会不会是298模块的问题,不明白的是升压模块只和298连接的时候电压输出是稳定的,但只要单片机一上电就不稳定了
多谢大佬,已经调试成功了。非常感谢
一周热门 更多>