找了塊最小系統板,一條編程線,一塊ULN2003驅動板,一個五線四相步進電機,下載程式問題已解決,但卡在步進電機的控制程式上。很困難下載了stepper.h的頭檔案,居然有錯誤,如圖,望大神搭救

uj5u.com熱心網友回復:
貌似我程式都還沒看懂,這個是變數?uj5u.com熱心網友回復:
#include "stm32f10x.h"#include "stepmotor.h"
//í?1?3?£¨2017£?
//???à°???2???μ??ú28BYJ-48
#define uint unsigned int
#define uchar unsigned char
int main(void)
{
Moto_Init(); //2???μ??ú3?ê??ˉ
while(1)
{
Delay_xms(4000);//?óê±oˉêy
Motor_angle(720,400); //2???μ??ú??ê±??
Delay_xms(4000);//?óê±oˉêy
Motor_angle(-720,400); //2???μ??ú?3ê±??
//MotorStop(); //2???μ??úí£?1oˉêy
}
}
上面是main.c
下面是stepmotor.c
#include "stepmotor.h"
//í?1?3?£¨2017£?
//???à°???2???μ??ú28BYJ-48
#define uint unsigned int
#define uchar unsigned char
//2???μ??ú?y·′×aêy×é1
uchar phasecw[8] ={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};// DA-D-CD-C-BC-B-AB-A
uchar phaseccw[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};// A-AB-B-BC-C-CD-D-DA.
//2???μ??ú?y·′×aêy×é2
//uint16_t phasecw1[4] ={0x08,0x04,0x02,0x01};// D-C-B-A
//uint16_t phaseccw1[4]={0x01,0x02,0x04,0x08};// A-B-C-D.
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
void Moto_Init(void)
{
//μ??ú1
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_ResetBits(GPIOC,GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 );
// IN4: PA3 d
// IN3: PA2 c
// IN2: PA1 b
// IN1: PA0 a
//μ??ú2
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
//GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 ;
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
//GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//GPIO_Init(GPIOB,&GPIO_InitStructure);
//GPIO_ResetBits(GPIOD,GPIO_Pin_4 | GPIO_Pin_5 |GPIO_Pin_6 |GPIO_Pin_7 );
// IN4: PB7 d
// IN3: PB6 c
// IN2: PB5 b
// IN1: PB4 a
}
void Motorcw(int speed)
{
uint8_t i;
for(i=0;i<8;i++)
{
GPIO_Write(GPIOA,phasecw[i]);
Delay_xms(speed);
}
}
void Motorccw(int speed)
{
uint8_t i;
for(i=0;i<8;i++)
{
GPIO_Write(GPIOA,phaseccw[i]);
Delay_xms(speed);
}
}
//void Motorcw1(int speed)
//{
// uint8_t i;
//
// for(i=0;i<4;i++)
// {
// GPIO_Write(GPIOB,phasecw1[i]);
// Delay_xms(speed);
// }
//}
void MotorStop(void)
{
GPIO_Write(GPIOA,0x0000);
}
//void MotorStop1(void)
//{
// GPIO_Write(GPIOB,0x0000);
//}
//óéóú *ò?????3?* *ê?3??á* ×a0.08789?裨μ??úêμ×a0.08789*64=5.625?è£?£??′?a5.625?è-2??????£
//?ò×aíê8???a *8????3?* £??′0.08789*8=0.70312?è?£è?3??aò????ü?ú£??òj?aDèòaμ?×aíêangle???è?ùDèμ??ü?úêy
void Motor_angle(int angle,int speed)
{
int i,j;
j=(int)(angle*64/(5.625*8));
if (angle>0)
{
for(i=0;i<j;i++)
{
Motorccw(speed);
}
}
else if(angle<0)
{
for(i=0;i<-j;i++)
{
Motorcw(speed);
}
}
}
//void Motorcw_angle1(int angle,int speed)
//{
//int i,j;
//j=(int)(angle/0.70312);
// for(i=0;i<j;i++)
// {
// Motorcw1(speed);
// }
//}
uj5u.com熱心網友回復:
程式有問題嗎?硬體是PA0~PA3鏈接到ULN2003的IN1~IN4轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/94250.html
標籤:單片機/工控
上一篇:FPGA在線配置需要燒寫什么格式
