驱动方式为A-AB-B-BC-C-CD-D-DA-A
使用延时函数实现
主函数
#include “dj.h”
#include “delay.h”
#include “sys.h”
#include “key_led.h”
//ALIENTEK miniSTM32¿ª·¢°åʵÑé1
//ÅÜÂíµÆʵÑé
//¼¼ÊõÖ§³Ö£ºwww.openedv.com
//¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾
int main()
{
int i=512; //ÕâÀïתһȦÐèÒª4096¸öÂö³åÐźŠתһȦiÉèÖÃΪ512
u32 t=550; //¼ÆËãµÃ305Ϊ10sµÄʱ¼ä£¬ÕâÀïÓÐ1sµÄÎó²î£¬¹Ê¼õÈ¥ÁË1sµÄʱ¼ä
// 1s¼ÆËãµÃµ½ËùÐèÑÓʱΪ30 305-30=275
//´ËÍ⣬¼ÆËãÁË5sËùÐèµÄÑÓʱ£¬275/2=137.5 È¡137 ²âµÃʱ¼äÎó²îÔÚ0.2s×óÒÔÄÚ
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
Dj_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
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”
void Dj_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPA,PD¶Ë¿ÚʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //LED0--》PA.8 ¶Ë¿ÚÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_0); //PA.8 Êä³ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //LED1--》PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_1); //PD.2 Êä³ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1--》PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_2); //PD.2 Êä³ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //LED1--》PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_3); //PD.2 Êä³ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
}
dj.h
#ifndef __DJ_H
#define __DJ_H
#include “sys.h”
//
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK miniSTM32开发板
//按键驱动代码
//正点原子@ALIENTEK
//技术william hill官网
:www.openedv.com
//修改日期:2012/9/3
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved
//
#define A1_H GPIO_SetBits(GPIOA,GPIO_Pin_0)
#define A1_L GPIO_ResetBits(GPIOA,GPIO_Pin_0)
#define B1_H GPIO_SetBits(GPIOA,GPIO_Pin_1)
#define B1_L GPIO_ResetBits(GPIOA,GPIO_Pin_1)
#define C1_H GPIO_SetBits(GPIOA,GPIO_Pin_2)
#define C1_L GPIO_ResetBits(GPIOA,GPIO_Pin_2)
#define D1_H GPIO_SetBits(GPIOA,GPIO_Pin_3)
#define D1_L GPIO_ResetBits(GPIOA,GPIO_Pin_3)
/*电机转动指令*/
/*
#define a {A1_H,B1_L,C1_L,D1_L}
#define b {A1_H,B1_H,C1_L,D1_L}
#define c {A1_l,B1_H,C1_L,D1_L}
#define d {A1_L,B1_H,C1_H,D1_L}
#define e {A1_L,B1_L,C1_H,D1_L}
#define f {A1_L,B1_L,C1_H,D1_H}
#define g {A1_L,B1_L,C1_L,D1_H}
#define h {A1_H,B1_L,C1_L,D1_H}
*/
void Dj_Init(void); //IO初始化
#endif
驱动方式为A-AB-B-BC-C-CD-D-DA-A
使用延时函数实现
主函数
#include “dj.h”
#include “delay.h”
#include “sys.h”
#include “key_led.h”
//ALIENTEK miniSTM32¿ª·¢°åʵÑé1
//ÅÜÂíµÆʵÑé
//¼¼ÊõÖ§³Ö£ºwww.openedv.com
//¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾
int main()
{
int i=512; //ÕâÀïתһȦÐèÒª4096¸öÂö³åÐźŠתһȦiÉèÖÃΪ512
u32 t=550; //¼ÆËãµÃ305Ϊ10sµÄʱ¼ä£¬ÕâÀïÓÐ1sµÄÎó²î£¬¹Ê¼õÈ¥ÁË1sµÄʱ¼ä
// 1s¼ÆËãµÃµ½ËùÐèÑÓʱΪ30 305-30=275
//´ËÍ⣬¼ÆËãÁË5sËùÐèµÄÑÓʱ£¬275/2=137.5 È¡137 ²âµÃʱ¼äÎó²îÔÚ0.2s×óÒÔÄÚ
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
Dj_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
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”
void Dj_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //ʹÄÜPA,PD¶Ë¿ÚʱÖÓ
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //LED0--》PA.8 ¶Ë¿ÚÅäÖÃ
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_0); //PA.8 Êä³ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //LED1--》PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_1); //PD.2 Êä³ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1--》PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_2); //PD.2 Êä³ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; //LED1--》PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //ÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO¿ÚËÙ¶ÈΪ50MHz
GPIO_ResetBits(GPIOA,GPIO_Pin_3); //PD.2 Êä³ö¸ß
GPIO_Init(GPIOA, &GPIO_InitStructure); //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
}
dj.h
#ifndef __DJ_H
#define __DJ_H
#include “sys.h”
//
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK miniSTM32开发板
//按键驱动代码
//正点原子@ALIENTEK
//技术william hill官网
:www.openedv.com
//修改日期:2012/9/3
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved
//
#define A1_H GPIO_SetBits(GPIOA,GPIO_Pin_0)
#define A1_L GPIO_ResetBits(GPIOA,GPIO_Pin_0)
#define B1_H GPIO_SetBits(GPIOA,GPIO_Pin_1)
#define B1_L GPIO_ResetBits(GPIOA,GPIO_Pin_1)
#define C1_H GPIO_SetBits(GPIOA,GPIO_Pin_2)
#define C1_L GPIO_ResetBits(GPIOA,GPIO_Pin_2)
#define D1_H GPIO_SetBits(GPIOA,GPIO_Pin_3)
#define D1_L GPIO_ResetBits(GPIOA,GPIO_Pin_3)
/*电机转动指令*/
/*
#define a {A1_H,B1_L,C1_L,D1_L}
#define b {A1_H,B1_H,C1_L,D1_L}
#define c {A1_l,B1_H,C1_L,D1_L}
#define d {A1_L,B1_H,C1_H,D1_L}
#define e {A1_L,B1_L,C1_H,D1_L}
#define f {A1_L,B1_L,C1_H,D1_H}
#define g {A1_L,B1_L,C1_L,D1_H}
#define h {A1_H,B1_L,C1_L,D1_H}
*/
void Dj_Init(void); //IO初始化
#endif
举报