zoukankan      html  css  js  c++  java
  • 步进电机驱动

    /*stepmotor.h*/
    #ifndef _STEPMOTOR_H
    #define _STEPMOTOR_H
    #include "sys.h"
    #include "delay.h"
    #define AA PDout(8) 
    #define aa PDout(9)
    #define BB PDout(10) 
    #define bb PDout(11)
    //单4
    #define ON_1 {AA=1;aa=0;BB=0;bb=0;} 
    #define ON_2 {AA=0;aa=0;BB=0;bb=1;}
    #define ON_3 {AA=0;aa=1;BB=0;bb=0;}
    #define ON_4 {AA=0;aa=0;BB=1;bb=0;}
    //双4
    #define ON_D1 {AA=0;aa=1;BB=1;bb=0;}
    #define ON_D2 {AA=1;aa=0;BB=1;bb=0;}
    #define ON_D3 {AA=1;aa=0;BB=0;bb=1;}
    #define ON_D4 {AA=0;aa=1;BB=0;bb=1;}
    //单双8拍
    #define ON_DD1 {AA=0;aa=1;BB=0;bb=0;}
    #define ON_DD2 {AA=0;aa=1;BB=1;bb=0;}
    #define ON_DD3 {AA=0;aa=0;BB=1;bb=0;}
    #define ON_DD4 {AA=1;aa=0;BB=1;bb=0;}
    #define ON_DD5 {AA=1;aa=0;BB=0;bb=0;}
    #define ON_DD6 {AA=1;aa=0;BB=0;bb=1;}
    #define ON_DD7 {AA=0;aa=0;BB=0;bb=1;}
    #define ON_DD8 {AA=0;aa=1;BB=0;bb=1;}
    
    #define OFF_ALL {AA=0;aa=0;BB=0;bb=0;}
    extern void Motor_GPIO_Init(void); extern void Motor_4(u16 time); extern void Motor_D4(u16 time); extern void Motor_8(u16 time); extern void Motor_8_back(u16 time); //反转 #endif
    /*stepmotor.c*/
    #include "stepmotor.h"
    void Motor_GPIO_Init(void)
    {
        GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);     
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;                 
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         
        GPIO_Init(GPIOD, &GPIO_InitStructure);                     
        //GPIO_SetBits(GPIOD,GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11);        
    }
    void Motor_4(u16 time)
    {
        ON_1;
        delay_ms(time);
        ON_2;
        delay_ms(time);
        ON_3;
        delay_ms(time);
        ON_4;
        delay_ms(time);
    }
    void Motor_D4(u16 time)
    {
        ON_D1;
        delay_ms(time);
        ON_D2;
        delay_ms(time);
        ON_D3;
        delay_ms(time);
        ON_D4;
        delay_ms(time);
    }
    void Motor_8(u16 time)  //执行一次转7.2度
    {//循环50次转360度,8拍每拍0.9度 
        ON_DD1;
        delay_us(time);
        ON_DD2;
        delay_us(time);
        ON_DD3;
        delay_us(time);
        ON_DD4;
        delay_us(time);
        ON_DD5;
        delay_us(time);
        ON_DD6;
        delay_us(time);
        ON_DD7;
        delay_us(time);
        ON_DD8;
        delay_us(time);
    }
    void Motor_8_back(u16 time) //反转
    {
        ON_DD8;
        delay_us(time);
        ON_DD7;
        delay_us(time);
        ON_DD6;
        delay_us(time);
        ON_DD5;
        delay_us(time);
        ON_DD4;
        delay_us(time);
        ON_DD3;
        delay_us(time);
        ON_DD2;
        delay_us(time);
        ON_DD1;
        delay_us(time);
    }
  • 相关阅读:
    极高效内存池实现 (cpu-cache)
    gles2.0环境的在windows上的建立
    使用OpenGL绘制 shapefile文件 完成最基本的gis操作
    纯C++安卓开发 (ndk)系列之 ---- 常见问题
    如何用 纯C++(ndk)开发安卓应用 ?
    Android-NDK处理用户交互事件
    图解-安卓中调用OpenGL
    图解安卓-c++开发-通过java 调用c++ jni的使用
    搭建安卓开发环境 hello world andriod
    关于socket通讯,如何才能高效?
  • 原文地址:https://www.cnblogs.com/ht-beyond/p/4304649.html
Copyright © 2011-2022 走看看