基本信息
文件名称:NXP 系列:LPC1768 (适用于复杂娱乐设备)_(27).LPC1768外设驱动程序开发.docx
文件大小:25.95 KB
总页数:23 页
更新时间:2025-06-15
总字数:约1.22万字
文档摘要

PAGE1

PAGE1

LPC1768外设驱动程序开发

1.GPIO驱动程序开发

1.1GPIO引脚配置

在LPC1768单片机中,GPIO(GeneralPurposeInput/Output)引脚是非常常用的外设,用于实现数字输入和输出功能。GPIO引脚的配置主要包括引脚功能选择、输入输出模式设置、上拉/下拉电阻配置等。

1.1.1引脚功能选择

LPC1768的每个引脚可以配置为多种功能,包括GPIO、UART、I2C等。配置引脚功能需要通过PINSEL寄存器来实现。每个引脚的功能选择由两个位组成,具体配置如下:

00:输入

01:输出

10:功能1

11:功能2

例如,P0.0引脚可以配置为GPIO输入、GPIO输出、UART0_TXD等功能。

//配置P0.0引脚为GPIO输入

PINSEL_CFG_TypePinCfg;

PinCfg.Funcnum=PINSEL_FUNC_0;//选择功能0

PinCfg.OpenDrain=PINSEL_PINMODE_NORMAL;//正常模式

PinCfg.Pinmode=PINSEL_PINMODE_PULLUP;//上拉电阻

PinCfg.Portnum=0;//端口0

PinCfg.Pinnum=0;//引脚0

PINSEL_ConfigPin(PinCfg);

1.1.2输入输出模式设置

配置GPIO引脚的输入输出模式可以通过FIOx_DIR寄存器来实现。FIOx_DIR寄存器的每一位对应一个引脚,设置为1表示输出,设置为0表示输入。

//配置P0.0引脚为输出

LPC_GPIO0-FIODIR=(10);//设置P0.0为输出

1.1.3上拉/下拉电阻配置

LPC1768的GPIO引脚支持上拉和下拉电阻配置,可以通过PINSEL寄存器中的Pinmode字段来设置。常见的配置选项包括:

PINSEL_PINMODE_PULLUP:上拉电阻

PINSEL_PINMODE_PULLDOWN:下拉电阻

PINSEL_PINMODE_NORMAL:无上拉/下拉电阻

//配置P0.0引脚为上拉电阻

PinCfg.Pinmode=PINSEL_PINMODE_PULLUP;

PINSEL_ConfigPin(PinCfg);

1.2GPIO读写操作

配置完GPIO引脚后,可以进行读写操作。读取GPIO引脚的状态可以通过FIOx_PIN寄存器,而写入GPIO引脚的状态则通过FIOx_SET和FIOx_CLR寄存器。

1.2.1读取GPIO引脚状态

//读取P0.0引脚的状态

uint32_tvalue=LPC_GPIO0-FIOPIN(10);//读取P0.0状态

if(value){

//P0.0为高电平

}else{

//P0.0为低电平

}

1.2.2写入GPIO引脚状态

//设置P0.0引脚为高电平

LPC_GPIO0-FIOSET=(10);

//设置P0.0引脚为低电平

LPC_GPIO0-FIOCLR=(10);

1.3GPIO中断配置

GPIO引脚可以配置为中断输入,以便在引脚状态变化时触发中断。配置GPIO中断需要设置FIOx_INTMODE和FIOx_INTEN寄存器。

1.3.1配置中断模式

FIOx_INTMODE寄存器用于设置中断触发模式,常见的模式包括:

0:下降沿触发

1:上升沿触发

//配置P0.0引脚为上升沿触发中断

LPC_GPIO0-FIOMIS=(10);//上升沿触发

1.3.2使能中断

FIOx_INTEN寄存器用于使能或禁用中断。

//使能P0.0引脚的中断

LPC_GPIO0-FIOINTEN_RISE=(10);//上升沿中断使能

1.3.3中断服务例程

在配置完中断后,需要编写中断服务例程(ISR)来处理中断事件。

//中断服务例程

voidEINT0_IRQHandler(void){

//清除中断标志

LPC_GPIO0-FIOINTSTAT_RISE=(10);

//处理中断事件

//例如,控制其他引脚的状态

LPC_GPIO0-FIOSET=(11);//设置P0.1引脚为高电平

}

//主函数中使能中断

intmain(void){

//配置P0.0引脚为上升沿触发中断

LPC_GPIO0-FIOMIS=(10);

L