搜索
bottom↓
回复: 1

ARM1138的步进电机驱动

[复制链接]

出0入0汤圆

发表于 2011-9-8 20:55:31 | 显示全部楼层 |阅读模式
电子设计大赛时急需,我临时写的,欢迎大家拍砖。

步进电机驱动ourdev_675377F8V6XU.rar(文件大小:45K) (原文件名:步进电机驱动.rar)

StepMotor.h:
/***********************************
四相步进电机驱动 for ARM1138
zhujinliang
2011.09.02  ver 1.0

使用定时器控制步进电机精确走步
使用本驱动请注意修改startup_ewarm.c中的中断向量
本驱动服务函数名为: StepMoterTimer_ISR
***********************************/

#ifndef  __STEP_MOTOR_H_
#define  __STEP_MOTOR_H_

#include  "systemInit.h"
#include  <timer.h>

///设定使用的定时器
#define  STEP_MOTOR_TIMER_PERIPH       SYSCTL_PERIPH_TIMER1
#define  STEP_MOTOR_TIMER_BASE         TIMER1_BASE
#define  STEP_MOTOR_TIMER_INT          INT_TIMER1A

///引脚设定,注意顺序
#define  STEP_MOTOR_PORT               GPIO_PORTA_BASE
#define  STEP_MOTOR_PERIPH             SYSCTL_PERIPH_GPIOA
#define  STEP_MOTOR_PIN_1              GPIO_PIN_0
#define  STEP_MOTOR_PIN_2              GPIO_PIN_1
#define  STEP_MOTOR_PIN_3              GPIO_PIN_2
#define  STEP_MOTOR_PIN_4              GPIO_PIN_3

#define  STEP_MOTOR_FORWARD_NEVER_STOP   0x7FFFFFFF     //使电机不停旋转,此时GetStepMotorStepNow可能溢出
#define  STEP_MOTOR_OPPOSITE_NEVER_STOP  0x80000000     //使电机不停旋转,此时GetStepMotorStepNow可能溢出

#define  STEP_MOTOR_MODE_8_BEATS       0x00   //使用八拍模式
#define  STEP_MOTOR_MODE_4_BEATS       0x01   //使用四拍模式
#define  STEP_MOTOR_MODE_ACTIVE_HIGH   0x00   //使用八拍模式
#define  STEP_MOTOR_MODE_ACTIVE_LOW    0x02   //使用四拍模式

#define  STEP_MOTOR_STATE_STOPED       0x00      //电机已停止
#define  STEP_MOTOR_STATE_STARTED      0x01      //电机已启动

///初始化驱动
void  StepMotorInit(void);

///设置电机参数
///参数 Mode : 电机参数,参考 STEP_MOTOR_MODE_ 常量,多个参数使用 | 连接
void  SetStepMotorMode(int Mode);

///获取电机设置参数
int   GetStepMotorMode(void);

///设置电机旋转角度,正数即为正向,如果启动后再做修改,将在当前位置旋转参数指定角度而不考虑上次目标是否到达
///参数 Steps : 旋转拍数,本驱动使用八
void  SetStepMotorRotate(signed int Steps);

///设置电机旋转角度,正数即为正向,如果启动后再做修改,将在当前位置旋转参数指定角度而不考虑上次目标是否到达
///参数 Steps : 旋转拍数,本驱动使用八
void  PlusStepMotorRotate(signed int Steps);

///启动电机
void  StepMotorStart(void);

///停止电机,保持锁定状态
void  StepMotorStop(void);

///查询电机状态,详见STEP_MOTOR_STATE_常量
int  GetStepMotorState(void);

///解除锁定状态
void  StepMotorRelease(void);

///获取设定的步数
int   GetStepMotorSteps(void);

///获取剩余步数
int   GetStepMotorStepNow(void);

///设定步进电机速度,实质为产生脉冲的频率,具体速度须根据设定参数以及电机指标计算
///参数 freq : 脉冲频率
void  SetStepMotorFrequency(float freq);

#endif

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2011-9-22 09:04:38 | 显示全部楼层
不错!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 17:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表