NXP

LPC1768-GPIO

2019-07-12 13:40发布

硬件基础:旺宝科技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的输出以点亮LEDGPIO输出设置寄存器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依次闪烁