GPIO
LPC1754的所有GPIO口在复位后默认为上拉输入状态。GPIO可以以字节、半字、字进行操作。GPIO有以下4种寄存器,其各自的功能描述如下:
Power: 一直使能。
Pins:通过设置寄存器,管脚可以作为普通的 GPIO,或者是他的复用功能(共有3种复用功能)。
Wake-up: GPIO0和GPIO2可以具有唤醒功能。
Interrupts:产生GPIO中断。
GPIO 管脚说明
LPC1754的GPIO是32bit的。GPIO0[30:0]、GPIO1[31:0]、GPIO2[13:0]、GPIO3[26:25]、GPIO4[29:28],GPIO具有复用功能,因此当其复用为其他功能时,此时是不可以作为GPIO使用的。
寄存器说明
FIODIR此寄存器实现对GPIO的方向控制。
FIOMASK高速端口屏蔽寄存器,在进行写、置位、清零、和读端口改变或返回时,只对寄存器中为“0”的位有效。
FIOPIN高速端口引脚值寄存器,与FIOMASK结合使用。无论管脚的方向或者复用的功能如何,皆可从此寄存器读出当前管脚的状态。
FIOSET高速端口输出置位寄存器,置1时管脚输出高电平,置0无影响。
FIOCLR高速端口输出清零寄存器,置1时管脚输出低电平,置0无影响。
LED流水灯的实现
如图中所示,GPIO P2_0~3输出低电平时即可点亮LED灯。
#include <lpc17xx.h>
int main()
{
uint32_t i, j;
k=2000000;
SystemInit();
LPC_GPIO2->FIODIR0 = 0x0f; // 以半字方式写,P2_0~P2_3 4个GPIO设置为输出模式。
//LPC_GPIO2->FIODIR = 0x0000000F;//以字节方式写
LPC_GPIO2->FIOCLR0 = 0x0f;//4个GPIO都输出低电平,点亮LED灯。
//LPC_GPIO2->FIOCLR = 0x0000000F;
while(1)
{
for (i = 0; i < 4; i++)
{
LPC_GPIO2->FIOSET = 1 << i;
for(j=2000000; j>0; j--);
//4个GPIO输出高电平,LED灯依次熄灭。
}
LPC_GPIO2->FIOCLR = 0x0000000F;
for(j=2000000; j>0; j--);
}
}
编译完以上代码,程序烧录后即实现LED流水灯。