基本信息
文件名称:NXP 系列:LPC1100 系列 (基于 Cortex-M0)_(20).高级应用开发.docx
文件大小:26.78 KB
总页数:25 页
更新时间:2025-06-14
总字数:约1.28万字
文档摘要

PAGE1

PAGE1

高级应用开发

在本节中,我们将探讨如何在NXP系列的LPC1100系列微控制器上进行高级应用开发。LPC1100系列微控制器基于ARMCortex-M0内核,具有高性能、低功耗和高集成度的特点,适用于多种嵌入式应用。我们将通过具体的例子,详细介绍如何利用这些微控制器的高级功能,包括中断处理、DMA传输、低功耗模式、实时操作系统(RTOS)集成等。

中断处理

中断处理是嵌入式系统中一个非常重要的机制,它可以提高系统的响应速度和效率。在LPC1100系列微控制器中,中断处理通过NVIC(NestedVectoredInterruptController)进行管理。NVIC支持多个中断源,并可以配置优先级,实现嵌套中断。

中断配置

首先,我们需要配置中断。在LPC1100系列中,中断配置通常包括以下步骤:

使能中断源:通过设置相应的中断使能寄存器来使能特定的中断。

配置中断优先级:通过设置中断优先级寄存器来配置中断的优先级。

编写中断服务例程(ISR):为每个中断编写相应的处理函数。

使能全局中断:确保CPU全局中断使能。

下面是一个具体的例子,配置外部中断0(EXTINT0)并编写相应的中断服务例程。

#includeLPC11xx.h//LPC1100系列头文件

//定义中断服务例程

voidEINT0_IRQHandler(void){

//清除中断标志

LPC_GPIOINT-IO0IntClr=(10);//清除P0.0引脚的中断标志

//中断处理逻辑

//例如:点亮LED

LPC_GPIO-FIOSET0=(11);//点亮P0.1引脚上的LED

}

//初始化外部中断

voidinit_EINT0(void){

//使能GPIO中断

LPC_SYSCON-SYSAHBCLKCTRL|=(16);//使能GPIO时钟

//配置P0.0为中断输入

LPC_GPIO-FIODIR0=~(10);//P0.0设置为输入

LPC_GPIO-FIOMASK0=~(10);//取消P0.0的输入掩码

LPC_GPIO-FIOSDAT=~(10);//设置P0.0低电平有效

//使能外部中断0

LPC_GPIOINT-IO0IntEnR=(10);//使能P0.0下降沿中断

//配置中断优先级

NVIC_SetPriority(EINT0_IRQn,1);//设置EINT0中断优先级为1

//使能EINT0中断

NVIC_EnableIRQ(EINT0_IRQn);

}

intmain(void){

//初始化GPIO

LPC_SYSCON-SYSAHBCLKCTRL|=(16);//使能GPIO时钟

LPC_GPIO-FIODIR0|=(11);//P0.1设置为输出

//初始化外部中断

init_EINT0();

//使能全局中断

__enable_irq();

while(1){

//主循环

}

}

中断优先级

LPC1100系列微控制器支持嵌套中断,这意味着高优先级的中断可以打断低优先级的中断。配置中断优先级的函数是NVIC_SetPriority。优先级值越小,优先级越高。

//配置EINT0中断优先级为1

NVIC_SetPriority(EINT0_IRQn,1);

中断嵌套

在多中断应用中,中断嵌套是非常有用的。例如,假设我们有两个外部中断,EINT0和EINT1,EINT0的优先级设置为1,EINT1的优先级设置为2。当EINT0发生时,如果EINT1也在等待处理,EINT1的中断服务例程将不会被调用,直到EINT0的中断服务例程执行完毕。但如果EINT0正在执行时,EINT1发生了,EINT1的中断服务例程将立即被调用,打断EINT0的执行。

voidEINT1_IRQHandler(void){

//清除中断标志

LPC_GPIOINT-IO0IntClr=(11);