/****************************************Copyright (c)**************************************************
**
** 力天电子
** http://www.LT430.com
**
**------------------------------------------------------------------------------------------------------
* 文件名:LEDCON.C
* 创建人:何呈
* 功能:LED闪烁控制。对发光二极管LED1、LED2、LED3进行控制,采用软件延时方法。
* 使用I/O口直接控制LED,采用拉电流的方式。
* 说明:将跳线器S4的LED1、LED2、LED3短接。
****************************************************************************/
#include "config.h"
/****************************************************************************
* 名称:Delay()
* 功能:长软件延时
* 入口参数:dly 延时参数,值越大,延时越久
* 出口参数:无
****************************************************************************/
void Delay(U32 dly)
{ U16 i;
for(; dly>0; dly--)
for(i=0; i<600; i++);
}
/*************************PLL设置************************************************/
void PLL_Init(void)
{
/* 设置系统各部分时钟 */
PLLCON = 1;
#if ((Fcclk / 4) / Fpclk) == 1
VPBDIV = 0;
#endif
#if ((Fcclk / 4) / Fpclk) == 2
VPBDIV = 2;
#endif
#if ((Fcclk / 4) / Fpclk) == 4
VPBDIV = 1;
#endif
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa;
PLLFEED = 0x55;
while((PLLSTAT & (1 << 10)) == 0);
PLLCON = 3;
PLLFEED = 0xaa;
PLLFEED = 0x55;
}
/****************************************************************************
* 名称:main()
* 功能:控制LED闪烁
****************************************************************************/
int main(void)
{
PINSEL0 = 0x00000000; // 设置所有管脚连接GPIO
PINSEL1 = 0x00000000;
IO0DIR = LED_MASK; // 设置LED2控制口为输出
IO0SET = LED_MASK; //所有的灯都灭
PLL_Init();
while(1)
{
IO0CLR = LED1CON; // 亮灯
Delay(1000); // 延时
IO0SET = LED1CON; // 灭灯
IO0CLR = LED2CON; // 亮灯
Delay(1000); // 延时
IO0SET = LED2CON; // 灭灯
IO0CLR = LED3CON; // 亮灯
Delay(1000); // 延时
IO0SET = LED3CON; // 灭灯
}
}