STM32控制步进电机实现精确转动
扫描二维码
随时随地手机看文章
驱动方式为A-AB-B-BC-C-CD-D-DA-A
使用延时函数实现
主函数
#include"dj.h"
#include"delay.h"
#include"sys.h"
#include"key_led.h"
//ALIENTEKminiSTM32?a·¢°?êμ?é1
//?ü?íμ?êμ?é
//??ê??§3?£owww.openedv.com
//1??YêDD?òíμ?×ó????óD?T1???
intmain()
{
inti=512;//?aà?×aò?è|Dèòa4096????3?D?o?×aò?è|iéè???a512
u32t=550;//????μ?305?a10sμ?ê±??£??aà?óD1sμ??ó2?£?1ê??è¥á?1sμ?ê±??
//1s????μ?μ??ùDè?óê±?a30305-30=275
//′?ía£?????á?5s?ùDèμ??óê±£?275/2=137.5è?1372aμ?ê±???ó2??ú0.2s×óò??ú
delay_init();//?óê±oˉêy3?ê??ˉ
Dj_Init();//3?ê??ˉó?LEDá??óμ?ó2?t?ó?ú
while(1)
{
while(i)
{
A1_H;B1_L;C1_L;D1_L;
delay_us(t);
A1_H;B1_H;C1_L;D1_L;
delay_us(t);
A1_L;B1_H;C1_L;D1_L;
delay_us(t);
A1_L;B1_H;C1_H;D1_L;
delay_us(t);
A1_L;B1_L;C1_H;D1_L;
delay_us(t);
A1_L;B1_L;C1_H;D1_H;
delay_us(t);
A1_L;B1_L;C1_L;D1_H;
delay_us(t);
A1_H;B1_L;C1_L;D1_H;
delay_us(t);
i--;
}
}
}
dj.c
#include"stm32f10x.h"
#include"sys.h"
#include"dj.h"
#include"delay.h"
voidDj_Init(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//ê1?üPA,PD???úê±?ó
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;//LED0-->PA.8???ú????
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//í?íìê?3?
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO?ú?ù?è?a50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_0);//PA.8ê?3???
GPIO_Init(GPIOA,&GPIO_InitStructure);//?ù?Yéè?¨2?êy3?ê??ˉGPIOA.8
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//LED1-->PD.2???ú????,í?íìê?3?
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//í?íìê?3?
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO?ú?ù?è?a50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_1);//PD.2ê?3???
GPIO_Init(GPIOA,&GPIO_InitStructure);//?ù?Yéè?¨2?êy3?ê??ˉGPIOA.8
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//LED1-->PD.2???ú????,í?íìê?3?
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//í?íìê?3?
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO?ú?ù?è?a50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_2);//PD.2ê?3???
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;//LED1-->PD.2???ú????,í?íìê?3?
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//í?íìê?3?
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//IO?ú?ù?è?a50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_3);//PD.2ê?3???
GPIO_Init(GPIOA,&GPIO_InitStructure);//?ù?Yéè?¨2?êy3?ê??ˉGPIOA.8
}
dj.h
#ifndef__DJ_H
#define__DJ_H
#include"sys.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEKminiSTM32开发板
//按键驱动代码
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2012/9/3
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C)广州市星翼电子科技有限公司2009-2019
//Allrightsreserved
//////////////////////////////////////////////////////////////////////////////////
#define A1_H GPIO_Se