⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 这是致远电子 MagicARM2410实验箱上基础实验的步进电机编程原代码
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.zyinside.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name: main.c
** Last modified Date: 2006-01-09
** Last Version: v1.0
** Description: MagicARM2410实验箱的基础实验---步进电机控制实验。
**              使用GPIO控制步进电机转动,采用双四拍控制方式。
**------------------------------------------------------------------------------------------------------
** Created By: 黄绍斌
** Created date: 2006-01-09
** Version: v1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
********************************************************************************************************/
#include  "config.h"

// 步进电机控制口线及操作宏函数定义
#define   MOTOA	    (1<<5)              /* GPC5  */
#define   MOTOB		(1<<6)  	        /* GPC6  */
#define   MOTOC 	(1<<7)  	        /* GPC7  */
#define   MOTOD		(1<<0)		        /* GPC0  */

#define   GPIOSET(PIN)  rGPCDAT = rGPCDAT | PIN         /* 设置PIN输出1,PIN为MOTOA--MOTOD */
#define   GPIOCLR(PIN)  rGPCDAT = rGPCDAT & (~PIN)      /* 设置PIN输出0,PIN为MOTOA--MOTOD */


/*********************************************************************************************************
** Function name: DelayNS
** Descriptions: 长软件延时。
**              延时时间与系统时钟有关。
** Input: dly	延时参数,值越大,延时越久
** Output: 无
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  DelayNS(uint32  dly)
{  
	uint32  i;

   	for(; dly>0; dly--) 
       for(i=0; i<50000; i++);
}



/*********************************************************************************************************
** Function name: MOTO_Mode2()
** Descriptions: 步进电机双四拍程序。
**               时序控制为AB--BC--CD--DA--AB,共控制运转4圈(电机步距角为18度)。
** Input: dly	每一步的延时控制。值越大,延时越久
** Output: 无
** Created by: 黄绍斌
** Created Date: 2006-01-09
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void MOTO_Mode2(uint8 dly)     
{   
    uint32 i;
        
    for(i=0; i<20; i++)
    {          
        // AB相有效 
        GPIOSET(MOTOA);
        GPIOSET(MOTOB);
        DelayNS(dly);
        GPIOCLR(MOTOA);
        GPIOCLR(MOTOB);
        
        // BC相有效 
        GPIOSET(MOTOB);
        GPIOSET(MOTOC);
        DelayNS(dly);
        GPIOCLR(MOTOB);
        GPIOCLR(MOTOC);

        // CD相有效 
        GPIOSET(MOTOC);
        GPIOSET(MOTOD);
        DelayNS(dly);
        GPIOCLR(MOTOC);
        GPIOCLR(MOTOD);
        
        // DA相有效 
        GPIOSET(MOTOD);            
        GPIOSET(MOTOA);
        DelayNS(dly);
        GPIOCLR(MOTOD);
        GPIOCLR(MOTOA);
    }
}

    

/*********************************************************************************************************
** Function name: main
** Descriptions: 使用GPIO控制步进电机转动,采用双四拍控制方式。   
** Input: 无
** Output: 系统返回值0
** Created by: 黄绍斌
** Created Date: 2005-12-31 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int  main(void)
{	
    // 步进电机控制口设置    
    rGPCCON = (rGPCCON & (~0x0000FC03)) | (0x00005401);	// GPC0、GPC5--7口设置为输出
    rGPCUP  = rGPCUP | 0x00E1;      // 禁止GPC0、GPC5--7口的上拉电阻
    rGPCDAT = rGPCDAT & (~0x00E1);  // 设置GPC0、GPC5--7口输出低电平    
    
    
    while(1)
    {
        MOTO_Mode2(1);  // 控制步进电机正转
        DelayNS(50);    // 停止步进电机,延时 
    }
	
   	return(0);
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -