硬件基础:旺宝科技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依次闪烁