这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 电源与模拟 » BF533对电机控制的初始化

共1条 1/1 1 跳转至

BF533对电机控制的初始化

助工
2014-08-26 21:36:22     打赏


#include "dm_bf5xx.h"
#include "dm_types.h"
  
/****************************************************************************
* 名称 : Disable_Motor
* 功能 : 电机控制端不允许
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void Disable_Motor()
{
  *pCtrOut_Flag_OE  =(Out_Flag_OE|MOTOR_OE);
  *pCtrOut_Flag_A = 0x0;
}
/****************************************************************************
* 名称 : Disable_Motor
* 功能 : 电机控制端允许
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void Eable_Motor()
{
    *pCtrOut_Flag_A  = 0x0;
    *pCtrOut_Flag_OE = (Out_Flag_OE&(~MOTOR_OE));
}
/****************************************************************************
* 名称 : DC_Motor_Enable
* 功能 : 直流电机控制函数
* 入口参数 :Direction  直流电机方向控制  为 0 正转 为 1 反转
* 出口参数 :无
****************************************************************************/
void DC_Motor_Enable (uint8_t Direction)
{
    Eable_Motor();
    if( Direction==0)
    {
        *pCtrOut_Flag_A = Out_Flag_A |MOTOR_A|MOTOR_C;
    }
    if( Direction==1)
    {
        *pCtrOut_Flag_A = Out_Flag_A |MOTOR_B|MOTOR_D;
    }
}
/****************************************************************************
* 名称 : Step_motor
* 功能 : 步进电机控制函数
* 入口参数 :Direction  步进电机方向控制  为 0 正转 为 1 反转
* 出口参数 :无
****************************************************************************/
#define DELAY_US 20000
void Step_motor(int Direction)
{
    uint8_t test;
    if(Direction==0)
        *pCtrOut_Flag_A  = 0;
  
    if(Direction==1)
    {   
        *pCtrOut_Flag_A = MOTOR_A;//A
        udelay(DELAY_US);
        *pCtrOut_Flag_A = 0;
        *pCtrOut_Flag_A = MOTOR_C;//C           udelay(0xfff);
        udelay(DELAY_US);
        *pCtrOut_Flag_A = 0;
        *pCtrOut_Flag_A = MOTOR_B;//B
        udelay(DELAY_US);
        *pCtrOut_Flag_A = 0;
        *pCtrOut_Flag_A = MOTOR_D;//D
        udelay(DELAY_US);
        *pCtrOut_Flag_A = 0;
    }
    if(Direction==2)
    {
        *pCtrOut_Flag_A = MOTOR_D;//D
        udelay(DELAY_US);
        *pCtrOut_Flag_A = 0;
        *pCtrOut_Flag_A = MOTOR_B;//B           udelay(0xfff);
        udelay(DELAY_US);
        *pCtrOut_Flag_A = 0;
        *pCtrOut_Flag_A = MOTOR_C;//C
        udelay(DELAY_US);
        *pCtrOut_Flag_A = 0;
        *pCtrOut_Flag_A = MOTOR_A;//A
        udelay(DELAY_US);
        *pCtrOut_Flag_A = 0;
    }
}

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]