标题:
stm32步进电机驱动代码
[打印本页]
作者:
stm32_learn
时间:
2018-11-14 11:33
标题:
stm32步进电机驱动代码
步进电机驱动
单片机源程序如下:
#include "motor.h"
#include "delay.h"
#include "usart.h"
#include "math.h"
#define PI 3.1415926
double angle(double x,double y);
double angle(double x,double y)
{
double z,b;
int a,speed;
int i=0,n;
if(y<=40)
z=asin(40/sqrt(40*40+150*150))-(40-y)/sqrt(((40-y)*(40-y))+150*150);
else
z=asin(40/sqrt(40*40+150*150))+(y-40)/sqrt(((y-40)*(y-40))+150*150);
b=z*180/PI;
a=(int)(b/0.9);
for(n=0;n<a;n++)
{
i=n%8;
switch(i)
{
case 0:
AIN2_1=1;AIN2_2=0;BIN2_1=0;BIN2_2=0;//delay_us(6000);
break;
case 1:
AIN2_1=1;AIN2_2=0;BIN2_1=1;BIN2_2=0;//delay_us(6000);
break;
case 2:
AIN2_1=0;AIN2_2=0;BIN2_1=1;BIN2_2=0;//delay_us(6000);
break;
case 3:
AIN2_1=0;AIN2_2=1;BIN2_1=1;BIN2_2=0;//delay_us(6000);
break;
case 4:
AIN2_1=0;AIN2_2=1;BIN2_1=0;BIN2_2=0;//delay_us(6000);
break;
case 5:
AIN2_1=0;AIN2_2=1;BIN2_1=0;BIN2_2=1;//delay_us(6000);
break;
case 6:
AIN2_1=0;AIN2_2=0;BIN2_1=0;BIN2_2=1;//delay_us(6000);
break;
case 7:
AIN2_1=1;AIN2_2=0;BIN2_1=0;BIN2_2=1;//delay_us(6000);
break;
}
}
//AIN2_1=1;AIN2_2=0;BIN2_1=1;BIN2_2=0;
return 0;
}
void turny(double angley)
{
int a;//拍数
int n,i;
//b=z*180/PI;
a=(int)(angley/0.9);
for(n=0;n<a;n++)
{
//AIN2_1=1;AIN2_2=0;BIN2_1=0;BIN2_2=0;delay_us(9000);
i=n%8;
switch(i)
{
case 0:
AIN2_1=1;AIN2_2=0;BIN2_1=0;BIN2_2=0;delay_us(3000);break;
case 1:
AIN2_1=1;AIN2_2=0;BIN2_1=1;BIN2_2=0;delay_us(5000);break;
case 2:
AIN2_1=0;AIN2_2=0;BIN2_1=1;BIN2_2=0;delay_us(3000); break;
case 3:
AIN2_1=0;AIN2_2=1;BIN2_1=1;BIN2_2=0;delay_us(5000); break;
case 4:
AIN2_1=0;AIN2_2=1;BIN2_1=0;BIN2_2=0;delay_us(3000);break;
case 5:
AIN2_1=0;AIN2_2=1;BIN2_1=0;BIN2_2=1;delay_us(5000);break;
case 6:
AIN2_1=0;AIN2_2=0;BIN2_1=0;BIN2_2=1;delay_us(3000);break;
case 7:
AIN2_1=1;AIN2_2=0;BIN2_1=0;BIN2_2=1;delay_us(5000);break;
}
}
//AIN2_1=1;AIN2_2=0;BIN2_1=1;BIN2_2=0;
}
int main(void)
{
//AIN2_1=1;AIN2_2=0;BIN2_1=1;BIN2_2=0;
Stm32_Clock_Init(9);
delay_init(72);
TIM3_Init(24,7199);
// EXTI_Init();
//MOTOR_Init();
//angle(40,10);
//AIN2_1=1;AIN2_2=0;BIN2_1=1;BIN2_2=0;
//RCC->APB2ENR |= 0x00000010;
/* 设置GPIOC的低8位为通用推挽输出 */
// GPIOC->CRL |= 0x33333333;
/* 初始化为Io口 */
// GPIOC->ODR |= 0xFF00;
//turny(90);
while(1)
{
/*if(TIM3->SR&0X0001)
{
ting();
delay_ms(1000);
GPIOC->BSRR=(u16)0XFFFD;
GPIOC->BRR=(u16)0X0002;
}
TIM3->SR&=~(1<<0);
//GPIOC->BSRR=(u16)0XFFFe;
//GPIOC->BRR=(u16)0X0001;*/
}
}
复制代码
所有资料51hei提供下载:
步进电机.rar
(116.46 KB, 下载次数: 75)
2018-11-14 16:15 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
zs5194613
时间:
2020-1-8 10:04
顶一个,感谢分享
作者:
smartphone
时间:
2020-4-14 18:16
感谢分享!下载看看
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1