?? main.c
字號:
/****************************************************************************
* 文 件 名:main.c
* 功 能:LED顯示控制。
* 通過GPIO控制步進電機
* 說 明:將跳線JP14和JP19全部短接。
****************************************************************************/
#include "config.h"
#define LED1 1<<16 // P2.16
#define MOTOA 1<<24 // P2.24
#define MOTOB 1<<25 // P2.25
#define MOTOC 1<<26 // P2.26
#define MOTOD 1<<27 // P2.27
#define LEDCON 0x00ff0000 // LED控制字
#define MOTOCON 0x0f000000 // MOTO控制字
#define GPIOSET(PIN) IO2SET = PIN // 方便修改置位端口
#define GPIOCLR(PIN) IO2CLR = PIN // 方便修改清位端口
void DelayNS(uint32 dly);
void MOTO_Mode1(uint8 i); // A-B-C-D
void MOTO_Mode2(uint8 i); // AB-BC-CD-DA-AB
void MOTO_Mode3(uint8 i); // A-AB-B-BC-C-CD-D-DA-A
/****************************************************************************
* 名 稱:main()
* 功 能:根據表DISP_TAB來控制LED顯示。
****************************************************************************/
int main(void)
{
/* PINSEL2使用啟動代碼的默認配置,切勿任意配置PINSEL2,否則總線會受到干擾 */
IO2DIR = LEDCON | MOTOCON; // 配置LED控制I/O方向
MOTO_Mode1(10); // A-B-C-D
//MOTO_Mode2(10); // AB-BC-CD-DA-AB
//MOTO_Mode3(10); // A-AB-B-BC-C-CD-D-DA-A
return(0);
}
/****************************************************************************
* 名 稱:DelayNS()
* 功 能:長軟件延時
* 入口參數:dly 延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
void DelayNS(uint32 dly)
{ uint32 i;
for(; dly>0; dly--)
{
for(i=0; i<5000; i++);
}
}
/****************************************************************************
* 名 稱:MOTO_Mode1()
* 功 能:單四拍程序
* 入口參數:uint8 i 延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
void MOTO_Mode1(uint8 i) // A-B-C-D
{
while(1)
{
GPIOCLR(LED1); // 點亮LED1,方便監視程序狀態
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOSET(LED1); // 熄滅LED1,方便監視程序狀態
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
}
}
/****************************************************************************
* 名 稱:MOTO_Mode2()
* 功 能:雙四拍程序
* 入口參數:uint8 i 延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
void MOTO_Mode2(uint8 i) // AB-BC-CD-DA-AB
{
while(1)
{
GPIOCLR(LED1); // 點亮LED1,方便監視程序狀態
/* AB */
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
GPIOSET(LED1); // 熄滅LED1,方便監視程序狀態
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
}
}
/****************************************************************************
* 名 稱:MOTO_Mode3()
* 功 能:單雙八拍程序
* 入口參數:uint8 i 延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
void MOTO_Mode3(uint8 i) // A-AB-B-BC-C-CD-D-DA-A
{
while(1)
{
GPIOCLR(LED1); // 點亮LED1,方便監視程序狀態
/* A */
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/* AB */
GPIOSET(MOTOA);
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOA);
GPIOCLR(MOTOB);
/* B */
GPIOSET(MOTOB);
DelayNS(i);
GPIOCLR(MOTOB);
/* BC */
GPIOSET(MOTOB);
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOB);
GPIOCLR(MOTOC);
/* C */
GPIOSET(MOTOC);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOSET(LED1); // 熄滅LED1,方便監視程序狀態
/* CD */
GPIOSET(MOTOC);
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOC);
GPIOCLR(MOTOD);
/* D */
GPIOSET(MOTOD);
DelayNS(i);
GPIOCLR(MOTOD);
/* DA */
GPIOSET(MOTOD);
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOD);
GPIOCLR(MOTOA);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -