ARM1138的步进电机驱动
电子设计大赛时急需,我临时写的,欢迎大家拍砖。步进电机驱动ourdev_675377F8V6XU.rar(文件大小:45K) (原文件名:步进电机驱动.rar)
StepMotor.h:
/***********************************
四相步进电机驱动 for ARM1138
zhujinliang
2011.09.02ver 1.0
使用定时器控制步进电机精确走步
使用本驱动请注意修改startup_ewarm.c中的中断向量
本驱动服务函数名为: StepMoterTimer_ISR
***********************************/
#ifndef__STEP_MOTOR_H_
#define__STEP_MOTOR_H_
#include"systemInit.h"
#include<timer.h>
///设定使用的定时器
#defineSTEP_MOTOR_TIMER_PERIPH SYSCTL_PERIPH_TIMER1
#defineSTEP_MOTOR_TIMER_BASE TIMER1_BASE
#defineSTEP_MOTOR_TIMER_INT INT_TIMER1A
///引脚设定,注意顺序
#defineSTEP_MOTOR_PORT GPIO_PORTA_BASE
#defineSTEP_MOTOR_PERIPH SYSCTL_PERIPH_GPIOA
#defineSTEP_MOTOR_PIN_1 GPIO_PIN_0
#defineSTEP_MOTOR_PIN_2 GPIO_PIN_1
#defineSTEP_MOTOR_PIN_3 GPIO_PIN_2
#defineSTEP_MOTOR_PIN_4 GPIO_PIN_3
#defineSTEP_MOTOR_FORWARD_NEVER_STOP 0x7FFFFFFF //使电机不停旋转,此时GetStepMotorStepNow可能溢出
#defineSTEP_MOTOR_OPPOSITE_NEVER_STOP0x80000000 //使电机不停旋转,此时GetStepMotorStepNow可能溢出
#defineSTEP_MOTOR_MODE_8_BEATS 0x00 //使用八拍模式
#defineSTEP_MOTOR_MODE_4_BEATS 0x01 //使用四拍模式
#defineSTEP_MOTOR_MODE_ACTIVE_HIGH 0x00 //使用八拍模式
#defineSTEP_MOTOR_MODE_ACTIVE_LOW 0x02 //使用四拍模式
#defineSTEP_MOTOR_STATE_STOPED 0x00 //电机已停止
#defineSTEP_MOTOR_STATE_STARTED 0x01 //电机已启动
///初始化驱动
voidStepMotorInit(void);
///设置电机参数
///参数 Mode : 电机参数,参考 STEP_MOTOR_MODE_ 常量,多个参数使用 | 连接
voidSetStepMotorMode(int Mode);
///获取电机设置参数
int GetStepMotorMode(void);
///设置电机旋转角度,正数即为正向,如果启动后再做修改,将在当前位置旋转参数指定角度而不考虑上次目标是否到达
///参数 Steps : 旋转拍数,本驱动使用八
voidSetStepMotorRotate(signed int Steps);
///设置电机旋转角度,正数即为正向,如果启动后再做修改,将在当前位置旋转参数指定角度而不考虑上次目标是否到达
///参数 Steps : 旋转拍数,本驱动使用八
voidPlusStepMotorRotate(signed int Steps);
///启动电机
voidStepMotorStart(void);
///停止电机,保持锁定状态
voidStepMotorStop(void);
///查询电机状态,详见STEP_MOTOR_STATE_常量
intGetStepMotorState(void);
///解除锁定状态
voidStepMotorRelease(void);
///获取设定的步数
int GetStepMotorSteps(void);
///获取剩余步数
int GetStepMotorStepNow(void);
///设定步进电机速度,实质为产生脉冲的频率,具体速度须根据设定参数以及电机指标计算
///参数 freq : 脉冲频率
voidSetStepMotorFrequency(float freq);
#endif 不错!
页:
[1]