本文主要是介绍DSP28335控制直流电机正反转及停止,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、按前述教程快速新建一个新工程,在工程文件中app文件夹下新建motor子文件夹用于存放motor.c/motor.h文件(记得添加进头文件路径),在user/main.c编写主函数
2、motor.c代码
#include "DSP2833x_Device.h"//包含所有的头文件,常用的宏定义 、F2833x 内核、 外设驱动的源文件对应的头文件
#include "DSP2833x_Examples.h"// 包含F2833x 通用文件的头文件。 比如中断、全局变量及函数声明、 IQmath 库等
#include "key.h"
#include "motor.h"
void DC_MOTOR_Init(void)
{EALLOW;GpioCtrlRegs.GPAMUX1.bit.GPIO2=0;//设置为普通IO口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;GpioDataRegs.GPACLEAR.bit.GPIO2=1;//清0GpioDataRegs.GPACLEAR.bit.GPIO3=1;GpioDataRegs.GPACLEAR.bit.GPIO4=1;GpioDataRegs.GPACLEAR.bit.GPIO5=1;EDIS;
}
3、motor.h代码
#ifndef DC_MOTOR_H_
#define DC_MOTOR_H_#include "DSP2833x_Device.h"//包含所有的头文件,常用的宏定义 、F2833x 内核、 外设驱动的源文件对应的头文件
#include "DSP2833x_Examples.h"// 包含F2833x 通用文件的头文件。 比如中断、全局变量及函数声明、 IQmath 库等#define DC_MOTOR_INA_SETH (GpioDataRegs.GPASET.bit.GPIO2=1)
#define DC_MOTOR_INA_SETL (GpioDataRegs.GPACLEAR.bit.GPIO2=1)#define DC_MOTOR_INB_SETH (GpioDataRegs.GPASET.bit.GPIO3=1)
#define DC_MOTOR_INB_SETL (GpioDataRegs.GPACLEAR.bit.GPIO3=1)#define DC_MOTOR_INC_SETH (GpioDataRegs.GPASET.bit.GPIO4=1)
#define DC_MOTOR_INC_SETL (GpioDataRegs.GPACLEAR.bit.GPIO4=1)#define DC_MOTOR_IND_SETH (GpioDataRegs.GPASET.bit.GPIO5=1)
#define DC_MOTOR_IND_SETL (GpioDataRegs.GPACLEAR.bit.GPIO5=1)void DC_Motor_Init(void);#endif
4、main.c代码
#include "DSP2833x_Device.h"//包含所有的头文件,常用的宏定义 、F2833x 内核、 外设驱动的源文件对应的头文件
#include "DSP2833x_Examples.h"// 包含F2833x 通用文件的头文件。 比如中断、全局变量及函数声明、 IQmath 库等
#include "leds.h"
#include "key.h"
#include "beep.h"
#include "relay.h"
#include "motor.h"void main()
{int i=0;char key=0;InitSysCtrl();//系统时钟初始化LED_Init();KEY_Init();
// BEEP_Init();
// Relay_Init();DC_MOTOR_Init();while(1){key=KEY_Scan(0);switch(key){case KEY1_PRESS:DC_MOTOR_INA_SETH;DC_MOTOR_INB_SETL;break;case KEY2_PRESS:DC_MOTOR_INA_SETL;DC_MOTOR_INB_SETH;break;case KEY3_PRESS:DC_MOTOR_INA_SETL;DC_MOTOR_INB_SETL;break;}i++;if(i%2000==0){LED1_TOGGLE;}DELAY_US(100);}
}
这篇关于DSP28335控制直流电机正反转及停止的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!