小磷光一

BF533对电机控制的初始化

0
阅读(2615)

 

#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;
	}
}