STM32控制步進電機實現(xiàn)精確轉(zhuǎn)動
驅(qū)動方式為A-AB-B-BC-C-CD-D-DA-A
使用延時函數(shù)實現(xiàn)
主函數(shù)
#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"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
//ALIENTEKminiSTM32開發(fā)板
//按鍵驅(qū)動代碼
//正點原子@ALIENTEK
//技術(shù)論壇:www.openedv.com
//修改日期:2012/9/3
//版本:V1.0
//版權(quán)所有,盜版必究。
//Copyright(C)廣州市星翼電子科技有限公司2009-2019
//Allrightsreserved
//////////////////////////////////////////////////////////////////////////////////
#define A1_H GPIO_Se