PAGE1
PAGE1
LPC1768外设接口
1.GPIO接口
1.1GPIO基本概念
GPIO(GeneralPurposeInput/Output)是通用输入输出端口,允许开发人员通过软件配置端口的功能,实现输入、输出、中断等多种功能。LPC1768具有多个GPIO端口,每个端口包含多个引脚,可以灵活配置以满足不同的应用需求。
1.2GPIO配置
LPC1768的GPIO配置主要通过寄存器来实现。以下是主要的GPIO寄存器:
PINSEL寄存器:用于选择引脚的功能。
FIODIR寄存器:用于设置引脚的方向(输入或输出)。
FIOSET和FIOCLR寄存器:用于设置和清除引脚的输出状态。
FIOPIN寄存器:用于读取引脚的输入状态。
FIOINT寄存器:用于配置引脚的中断功能。
1.3GPIO代码示例
1.3.1配置GPIO引脚
假设我们需要将P0.0引脚配置为输出模式,并将P0.1引脚配置为输入模式。以下是实现该配置的代码示例:
#includeLPC177x_8x.h
#includeLPC177x_8x_gpio.h
voidGPIO_Configuration(void){
//配置P0.0为输出模式
LPC_PINCON-PINSEL0=~(0x30);//清除P0.0的引脚选择
LPC_PINCON-PINSEL0|=(0x00);//设置P0.0为GPIO功能
LPC_GPIO0-FIODIR|=(10);//设置P0.0为输出方向
//配置P0.1为输入模式
LPC_PINCON-PINSEL0=~(0x32);//清除P0.1的引脚选择
LPC_PINCON-PINSEL0|=(0x02);//设置P0.1为GPIO功能
LPC_GPIO0-FIODIR=~(11);//设置P0.1为输入方向
}
intmain(void){
GPIO_Configuration();
//主循环
while(1){
//读取P0.1的输入状态
uint32_tinput_status=(LPC_GPIO0-FIOPIN(11))?1:0;
//根据输入状态设置P0.0的输出状态
if(input_status){
LPC_GPIO0-FIOSET=(10);//设置P0.0为高电平
}else{
LPC_GPIO0-FIOCLR=(10);//设置P0.0为低电平
}
//延时
for(volatileinti=0;i1000000;i++);
}
}
1.4GPIO中断配置
LPC1768的GPIO引脚可以配置为中断输入,当引脚状态发生变化时,可以触发中断。以下是配置P0.1引脚为中断输入的示例代码:
#includeLPC177x_8x.h
#includeLPC177x_8x_gpio.h
#includeLPC177x_8xVIC.h
voidGPIO_Interrupt_Configuration(void){
//配置P0.1为GPIO功能
LPC_PINCON-PINSEL0=~(0x32);
LPC_PINCON-PINSEL0|=(0x02);
//设置P0.1为输入方向
LPC_GPIO0-FIODIR=~(11);
//配置P0.1为上升沿触发中断
LPC_GPIO0-IO0IntEnR=(11);
LPC_GPIO0-IO0IntEnF=0;
//清除中断标志
LPC_GPIO0-IO0IntClr=(11);
//配置中断优先级
LPC_VIC-VectPriority[7]=0x20;//设置为优先级2
//使能中断
LPC_VIC-VectAddr[7]=(uint32_t)GPIO_Interrupt_Handler;
LPC_VIC-VectCn