NXP 系列:LPC1114 系列 (低功耗)_(13).中断系统与处理.docxVIP

NXP 系列:LPC1114 系列 (低功耗)_(13).中断系统与处理.docx

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE1

PAGE1

中断系统与处理

中断系统是嵌入式系统中一个非常重要的组成部分,它使得单片机能够及时响应外部或内部的异步事件,从而提高系统的实时性和效率。在NXP的LPC1114系列单片机中,中断系统的设计和实现非常灵活,支持多种中断源和中断优先级。本节将详细介绍LPC1114的中断系统及其处理方法,包括中断向量表、中断优先级、中断使能和禁能、中断服务例程(ISR)的编写和调用等。

中断向量表

中断向量表(InterruptVectorTable,IVT)是一个存储在内存中的表,用于存放各个中断的入口地址。在LPC1114中,中断向量表通常位于Flash的起始地址。每个中断都有一个对应的向量,指向其对应的中断服务例程(ISR)。

中断向量表的结构

LPC1114的中断向量表结构如下:

位置|描述|

|——|——|

0|初始堆栈指针|

0|复位处理程序|

0|NMI处理程序|

0x0000000C|硬件故障处理程序|

0|内存管理故障处理程序|

0|总线故障处理程序|

0|未定义指令故障处理程序|

0x0000001C|保留|

0|SVCall处理程序|

0|保留|

0|保留|

0x0000002C|保留|

0|PendSV处理程序|

0|SysTick定时器处理程序|

0|外部中断0处理程序|

…|…|

0x000000FC|外部中断28处理程序|

中断向量表的重定位

在某些应用中,可能需要将中断向量表重定位到不同的内存地址。LPC1114允许通过修改向量表基地址寄存器(VTOR)来实现这一点。以下是一个简单的示例,将中断向量表重定位到SRAM中:

//重定位中断向量表到SRAM

voidrelocate_vector_table(void){

//设置向量表基地址为SRAM的起始地址

SCB-VTOR=0//假设SRAM的起始地址为0

}

中断优先级

LPC1114支持可配置的中断优先级,通过设置中断优先级寄存器(IPR)来实现。每个中断源都有一个优先级值,范围从0到7,其中0表示最高优先级,7表示最低优先级。优先级设置使得在多个中断同时发生时,系统能够根据优先级顺序进行处理。

设置中断优先级

以下是一个示例,设置外部中断0的优先级为2:

voidset_interrupt_priority(void){

//设置外部中断0的优先级为2

NVIC_SetPriority(EXTI0_IRQn,2);

}

中断使能和禁能

中断的使能和禁能是通过配置中断使能寄存器(IER)和中断禁能寄存器(IDR)来实现的。在LPC1114中,可以通过NVIC(NestedVectoredInterruptController)来管理中断使能和禁能。

使能中断

以下是一个示例,使能外部中断0:

voidenable_interrupt(void){

//使能外部中断0

NVIC_EnableIRQ(EXTI0_IRQn);

}

禁能中断

以下是一个示例,禁能外部中断0:

voiddisable_interrupt(void){

//禁能外部中断0

NVIC_DisableIRQ(EXTI0_IRQn);

}

中断服务例程(ISR)

中断服务例程(InterruptServiceRoutine,ISR)是中断发生时执行的代码。每个中断源都有一个对应的ISR,这些ISR通常定义在中断向量表中。编写ISR时需要注意保持代码的简洁和高效,以减少中断处理时间。

编写和调用ISR

以下是一个简单的外部中断0的ISR示例:

//外部中断0的ISR

voidEXTI0_IRQHandler(void){

//清除中断标志

LPC_GPIOINT-IO0IntClr=(10);//清除GPIO0的第0位中断标志

//处理中断事件

//例如,读取GPIO状态并进行相应操作

if(LPC_GPIO0-FIOPin(10)){

//GPIO0的第0位为高电平

//执行相应操作

}else{

您可能关注的文档

文档评论(0)

找工业软件教程找老陈 + 关注
实名认证
服务提供商

寻找教程;翻译教程;题库提供;教程发布;计算机技术答疑;行业分析报告提供;

1亿VIP精品文档

相关文档