📄 main.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 + -