基本信息
文件名称:NXP 系列:LPC1100 系列_(24).LPC1100系列的中断系统.docx
文件大小:23.82 KB
总页数:22 页
更新时间:2025-06-18
总字数:约1.1万字
文档摘要

PAGE1

PAGE1

LPC1100系列的中断系统

中断系统概述

中断系统是嵌入式系统中一个非常重要的组成部分,它允许处理器在处理正常任务的同时响应外部或内部的突发事件。LPC1100系列微控制器使用基于Cortex-M0内核的中断控制器,该控制器提供了一种高效且灵活的方式来管理不同类型的中断。

中断控制器结构

LPC1100系列的中断控制器是基于ARMCortex-M0内核的嵌套向量中断控制器(NVIC)。NVIC支持多个中断源,并且可以对这些中断进行优先级管理。中断控制器的主要功能包括:

中断请求管理:处理不同来源的中断请求。

中断优先级管理:确定中断的优先级顺序。

中断向量表管理:存储中断处理函数的地址。

中断使能和禁用:控制哪些中断可以被处理器响应。

中断优先级

LPC1100系列的NVIC支持16个不同的优先级级别(0-15),其中0是最高优先级,15是最低优先级。中断优先级可以在NVIC的寄存器中进行配置。优先级管理确保了在多个中断同时发生时,处理器能够按照一定的顺序处理这些中断。

中断向量表

中断向量表是NVIC的一个重要组成部分,它存储了每个中断处理函数的地址。LPC1100系列的中断向量表通常位于Flash存储器的起始地址。处理器在接收到中断请求时,会根据中断向量表跳转到对应的中断处理函数。

中断使能和禁用

通过NVIC的寄存器,可以对每个中断进行使能或禁用操作。使能的中断可以在发生中断事件时被处理器响应,而禁用的中断则不会被处理。这种机制允许开发者根据应用需求灵活地控制中断的响应。

中断配置

初始化中断控制器

在使用中断之前,需要初始化NVIC。初始化包括设置中断优先级、使能中断以及配置中断向量表。

#includeLPC11xx.h

voidNVIC_Init(void){

//设置中断优先级

NVIC_SetPriority(WKT_IRQn,1);//设置WKT中断优先级为1

NVIC_SetPriority(TIMER32_0_IRQn,2);//设置32位定时器0中断优先级为2

//使能中断

NVIC_EnableIRQ(WKT_IRQn);//使能WKT中断

NVIC_EnableIRQ(TIMER32_0_IRQn);//使能32位定时器0中断

}

设置中断优先级

中断优先级的设置通过NVIC的NVIC_SetPriority函数完成。该函数需要两个参数:中断号和优先级。

voidSetInterruptPriority(void){

NVIC_SetPriority(WKT_IRQn,1);//设置WKT中断优先级为1

NVIC_SetPriority(TIMER32_0_IRQn,2);//设置32位定时器0中断优先级为2

}

使能和禁用中断

使能和禁用中断分别通过NVIC_EnableIRQ和NVIC_DisableIRQ函数完成。使能中断后,当对应的中断事件发生时,处理器会响应并处理该中断。

voidEnableInterrupts(void){

NVIC_EnableIRQ(WKT_IRQn);//使能WKT中断

NVIC_EnableIRQ(TIMER32_0_IRQn);//使能32位定时器0中断

}

voidDisableInterrupts(void){

NVIC_DisableIRQ(WKT_IRQn);//禁用WKT中断

NVIC_DisableIRQ(TIMER32_0_IRQn);//禁用32位定时器0中断

}

中断处理函数

中断处理函数是当特定中断发生时,处理器跳转执行的代码。这些函数通常需要在启动代码中定义,并且在中断向量表中注册。

定义中断处理函数

中断处理函数的定义需要遵循特定的命名规则,例如WKT_IRQHandler用于WKT中断,TIMER32_0_IRQHandler用于32位定时器0中断。

voidWKT_IRQHandler(void){

if(WKT_INTSTATWKT_INTSTAT_INT){

//清除中断标志

WKT_INTCLR=WKT_INTCLR_INT;

//处理WKT中断

//例如:读取WKT计数器值

uint32_twkt_count=WKT_COUNT;

//执行其他中断处理任务

//...