LPC1769 GPIO流水灯实验

1.硬件配置

LPC1769 GPIO流水灯实验_第1张图片

2.源代码,相关寄存器请参见zlg翻译的手册

#include "LPC17xx.h"

/*#if注释掉不使用的代码*/
#if 0
static void delay(void)
{
    volatile unsigned int i;
    for(i=0; i<2500000; i++);
}

// LED0 : P2.0
// LED1 : P2.1
// LED2 : P2.2
// LED3 : P2.3

#define led0_off()  LPC_GPIO2->FIOSET0 = 1<<0
#define led1_off()  LPC_GPIO2->FIOSET0 = 1<<1
#define led2_off()  LPC_GPIO2->FIOSET0 = 1<<2
#define led3_off()  LPC_GPIO2->FIOSET0 = 1<<3
#define led_all_off()  LPC_GPIO2->FIOSET0 = 0xF

#define led0_on() LPC_GPIO2->FIOCLR0 = 1<<0
#define led1_on() LPC_GPIO2->FIOCLR0 = 1<<1
#define led2_on() LPC_GPIO2->FIOCLR0 = 1<<2
#define led3_on() LPC_GPIO2->FIOCLR0 = 1<<3
#define led_all_on()  LPC_GPIO2->FIOCLR0 = 0xF


void Led_Turn_on(unsigned int led)
{
    led_all_off();

	/* Turn Off Select LED */
    switch(led)
    {
        case 0:
          led3_on();
          break;

        case 1:
          led2_on();
          break;

        case 2:
          led1_on();
          break;

        case 3:
          led0_on();
          break;
          
        default:
          led_all_on();
          break;
    }
}

int main(void)
{
    unsigned int KeyNum = 0;
    // CMSIS的启动代码里面已经调用了 SystemInit.这里不必再次调用.
    // SystemInit();

    //配置LED端口为输出
    LPC_GPIO2->FIODIR0 |= 1<<0;
    LPC_GPIO2->FIODIR0 |= 1<<1;
    LPC_GPIO2->FIODIR0 |= 1<<2;
    LPC_GPIO2->FIODIR0 |= 1<<3;

	led_all_on();
	delay();
	led_all_off();
	delay();

	KeyNum = 0;

    while(1)
    {

      led_all_off();
      Led_Turn_on(KeyNum%4);
      KeyNum++;

      delay();
    }
}
#endif
//LPC1769 test program
// LED0 : P2.0
// LED1 : P2.1
// LED2 : P2.2
// LED3 : P2.3
#define led0_off() LPC_GPIO2->FIOSET0= 1<<0
#define led1_off()  LPC_GPIO2->FIOSET0 = 1<<1
#define led2_off()  LPC_GPIO2->FIOSET0 = 1<<2
#define led3_off()  LPC_GPIO2->FIOSET0 = 1<<3
#define led_all_off()  LPC_GPIO2->FIOSET0 = 0xF

#define led0_on() LPC_GPIO2->FIOCLR0 = 1<<0
#define led1_on() LPC_GPIO2->FIOCLR0 = 1<<1
#define led2_on() LPC_GPIO2->FIOCLR0 = 1<<2
#define led3_on() LPC_GPIO2->FIOCLR0 = 1<<3
#define led_all_on()  LPC_GPIO2->FIOCLR0 = 0xF
void Delay (uint32_t Time){
      uint32_t i;

      i = 0;
      while (Time--) {
          for (i = 0; i < 5000; i++);
      }
  }
int main(void){
	//??LED?????
	LPC_GPIO2->FIODIR0 |= 1<<0;
	LPC_GPIO2->FIODIR0 |= 1<<1;
	LPC_GPIO2->FIODIR0 |= 1<<2;
	LPC_GPIO2->FIODIR0 |= 1<<3;

	led_all_on();
	Delay(500);
	led_all_off();
	Delay(500);
	while(1){
		led0_on();
		led1_off();
		Delay(500);
		led0_off();
		led1_on();
		Delay(500);
	}
//	return 0;
}


你可能感兴趣的:(LPC1769程序设计,源代码,LPC1769,流水灯,GPIO)