步进电机实验

该博客介绍了使用DSP2833x微控制器对步进电机进行控制的程序实现。通过初始化GPIO端口和设置电机输出信号,实现了步进电机的正转和反转。当检测到按键输入时,电机按照预设的步进顺序运行指定次数,延迟时间可调,以实现平稳转动。同时,代码中包含了两种不同的步进电机连接方式(四线制和五线制)的步进序列。
摘要由CSDN通过智能技术生成

步进电机实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include "step_motor.h"



void Step_Motor_Init(void)
{
	EALLOW;
	SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK = 1;// 开启GPIO时钟
	//Step_MOTOR端口配置
	GpioCtrlRegs.GPAMUX1.bit.GPIO2=0;
	GpioCtrlRegs.GPADIR.bit.GPIO2=1;

	GpioCtrlRegs.GPAMUX1.bit.GPIO3=0;
	GpioCtrlRegs.GPADIR.bit.GPIO3=1;

	GpioCtrlRegs.GPAMUX1.bit.GPIO4=0;
	GpioCtrlRegs.GPADIR.bit.GPIO4=1;

	GpioCtrlRegs.GPAMUX1.bit.GPIO5=0;
	GpioCtrlRegs.GPADIR.bit.GPIO5=1;

	EDIS;

	GpioDataRegs.GPACLEAR.bit.GPIO2=1;
	GpioDataRegs.GPACLEAR.bit.GPIO3=1;
	GpioDataRegs.GPACLEAR.bit.GPIO4=1;
	GpioDataRegs.GPACLEAR.bit.GPIO5=1;
}
#ifndef STEP_MOTOR_H_
#define STEP_MOTOR_H_

#include "DSP2833x_Device.h"     // DSP2833x 头文件
#include "DSP2833x_Examples.h"   // DSP2833x 例子相关头文件

#define STEP_MOTOR_4LINE2
//#define STEP_MOTOR_5LINE4


#define MOTO_OUTA_SETH	(GpioDataRegs.GPASET.bit.GPIO2=1)
#define MOTO_OUTA_SETL	(GpioDataRegs.GPACLEAR.bit.GPIO2=1)

#define MOTO_OUTB_SETH	(GpioDataRegs.GPASET.bit.GPIO3=1)
#define MOTO_OUTB_SETL	(GpioDataRegs.GPACLEAR.bit.GPIO3=1)

#define MOTO_OUTC_SETH	(GpioDataRegs.GPASET.bit.GPIO4=1)
#define MOTO_OUTC_SETL	(GpioDataRegs.GPACLEAR.bit.GPIO4=1)

#define MOTO_OUTD_SETH	(GpioDataRegs.GPASET.bit.GPIO5=1)
#define MOTO_OUTD_SETL	(GpioDataRegs.GPACLEAR.bit.GPIO5=1)

void Step_Motor_Init(void);


#endif /* STEP_MOTOR_H_ */
#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File

#include "leds.h"
#include "key.h"
#include "step_motor.h"


#ifdef STEP_MOTOR_5LINE4
unsigned char Step_table_ZTurn[]={0xfff7,0xfffb,0xffdf,0xffef};
unsigned char Step_table_FTurn[]={0xffef,0xffdf,0xfffb,0xfff7};
#endif

#ifdef STEP_MOTOR_4LINE2
unsigned char Step_table_ZTurn[]={0xfff7,0xffdf,0xfffb,0xffef};
unsigned char Step_table_FTurn[]={0xffef,0xfffb,0xffdf,0xfff7};
#endif


/*******************************************************************************
* 函 数 名         : main
* 函数功能		   : 主函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void main()
{
	int i=0;
	char key=0;
	short cnt=0;
	char j=0;

	InitSysCtrl();

	LED_Init();
	KEY_Init();
	Step_Motor_Init();

	while(1)
	{
		key=KEY_Scan(0);

#ifdef STEP_MOTOR_4LINE2
		if(key==KEY1_PRESS)
		{
			cnt=1024;
			while(cnt--)
			{
				for(j=0;j<4;j++)
				{
					GpioDataRegs.GPADAT.all=Step_table_ZTurn[j];
					DELAY_US(5000);
				}
			}
		}
		else if(key==KEY2_PRESS)
		{
			cnt=1024;
			while(cnt--)
			{
				for(j=0;j<4;j++)
				{
					GpioDataRegs.GPADAT.all=Step_table_FTurn[j];
					DELAY_US(5000);
				}
			}
		}
#endif

#ifdef STEP_MOTOR_5LINE4
		if(key==KEY1_PRESS)
		{
			cnt=1024;
			while(cnt--)
			{
				for(j=0;j<4;j++)
				{
					GpioDataRegs.GPADAT.all=Step_table_ZTurn[j];
					DELAY_US(5000);
				}
			}
		}
		else if(key==KEY2_PRESS)
		{
			cnt=1024;
			while(cnt--)
			{
				for(j=0;j<4;j++)
				{
					GpioDataRegs.GPADAT.all=Step_table_FTurn[j];
					DELAY_US(5000);
				}
			}
		}
#endif

		i++;
		if(i%2000==0)
		{
			LED1_TOGGLE;
		}
		DELAY_US(100);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻童:CPU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值