LPC1768-GPIO

硬件基础:旺宝科技ARM NXP LPC1768 KIT V2.0

实现功能:LED流水灯效果

LED硬件连接图如下:


连接在P2.0-P2.7,GPIO输出高电平点亮LED

查阅1700芯片手册,与GPIO相关的寄存器如下表






当引脚被配置为GPIO功能的时候,FIOxDIR寄存器可以控制引脚的方向(输入输出),相应的位设置为0则为输入引脚,设置为1则为输出引脚

       除了可以32位访问之外,FIODIR寄存器还可以字节或者半字访问,相应寄存器如下


void Led_Init(){
		LPC_GPIO2->FIODIR  = 0x000000ff; 	// 32位设置方式
		LPC_GPIO2->FIODIR0  = 0xff; 		// 字节设置方式
		LPC_GPIO0->FIODIR  = 0x00200000; 				 //P0.21设置为输出模式
		LPC_GPIO0->FIODIR2 = 0x20;						// 字节设置方式
		LPC_GPIO0->FIOPIN |= 0x00200000; 			     // P0.21 = 1	
}

字节设置方式和32位寄存器设置方式均可,至此GPIO输出设备完毕,接下来设置GPIO的输出以点亮LED

GPIO输出设置寄存器FIOxSET为32位设置方式,FIOxSETx寄存器为字节设置方式,FIOxSETL和FIOxSETU为半字设置方式,具体设置方式同输出设置寄存器,FIOxCLR寄存器对寄存器相关位清零,设置为1时有效

GPIO端口引脚值寄存器FIOxPIN可直接设置GPIO引脚的值而无需使用SET 和 CLR寄存器

  LPC_GPIO0->FIOPIN |= 0x00200000; 			     /* p0.21=1*/

所以可以通过设置该寄存器来实现流水灯现象

int8_t temp []={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,
 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01} ;	 
Led_Display(){
     for(a=0;a<16;a++){
	    LPC_GPIO2->FIOPIN = temp[a];			/*ÍùFIOPIN¼Ä´æÆ÷дֵ*/
		Delay(300);
	  	if(a==15) { 
			 LPC_GPIO2->FIOPIN |= 0xff;			    /*µãÁÁÈ«²¿LED*/
			 Delay(500);
			 LPC_GPIO2->FIOPIN &=~0xff;			    /*ϨÃðÈ«²¿LED*/
			 Delay(500);

	    }
	 }
	 
  }
下载程序后可看到LED依次闪烁


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页