PAGE1
PAGE1
中断系统与异常处理
中断系统概述
中断系统是嵌入式系统中一个非常重要的组成部分,它允许处理器在执行当前任务时被外部事件或内部事件打断,处理这些事件后继续执行原来的任务。中断系统提高了系统的实时性和响应能力,使得单片机能够及时处理外部设备的请求,从而实现高效的数据处理和控制。
在TI系列的TM4C123系列单片机中,中断系统设计得非常完善,支持多种中断源和中断优先级,能够满足不同应用场景的需求。本节将详细介绍TM4C123系列单片机的中断系统原理和配置方法。
中断源
TM4C123系列单片机支持多种中断源,包括但不限于:
外部中断:通过外部引脚(如GPIO)触发的中断。
定时器中断:由定时器模块触发的中断。
UART中断:由UART模块触发的中断。
ADC中断:由ADC模块触发的中断。
DMA中断:由DMA控制器触发的中断。
系统异常:如复位、未定义指令、总线错误等。
中断向量表
中断向量表是中断系统的核心部分,它存储了各个中断源对应的中断服务例程(ISR)的地址。TM4C123系列单片机的中断向量表位于存储器的特定地址范围,通常在Flash存储器的起始地址。中断向量表的结构如下:
地址|中断源|描述|
|——|——–|——|
0|复位|系统复位向量|
0|NMI|不可屏蔽中断向量|
0|硬件故障|硬件故障中断向量|
0x0000000C|内存管理|内存管理中断向量|
0|总线错误|总线错误中断向量|
0|使用错误|使用错误中断向量|
0|周期性中断|周期性中断向量|
0x0000001C|SVCall|软件中断向量|
0|DebugMonitor|调试监控中断向量|
0|PendSV|挂起系统调用中断向量|
0|SysTick|系统滴答定时器中断向量|
0x0000002C|GPIOPortA|GPIO端口A中断向量|
0|GPIOPortB|GPIO端口B中断向量|
…|…|…|
中断优先级
TM4C123系列单片机支持中断优先级的配置,允许开发者根据实际需求设置不同中断源的优先级。优先级的设置通过NVIC(NestedVectoredInterruptController)模块来实现。NVIC支持16个优先级组,每个组可以有0-7级子优先级。优先级的配置可以确保在多个中断同时发生时,优先处理高优先级的中断。
中断使能与禁用
在TM4C123系列单片机中,需要通过特定的寄存器来使能或禁用中断。常见的寄存器包括:
NVIC_ISERx:中断使能寄存器,用于使能中断。
NVIC_ICERx:中断清除寄存器,用于禁用中断。
NVIC_IPRx:中断优先级寄存器,用于设置中断优先级。
NVIC_ISPRx:中断挂起寄存器,用于挂起中断。
NVIC_ICPRx:中断清除挂起寄存器,用于清除挂起的中断。
中断服务例程(ISR)
中断服务例程是中断发生时处理器执行的代码段。在TM4C123系列单片机中,每个中断源都有一个对应的ISR。编写ISR时需要注意以下几点:
函数声明:ISR函数需要使用特定的声明方式,通常使用__attribute__((interrupt))。
保存和恢复上下文:在ISR中需要保存被中断任务的寄存器状态,处理完中断后恢复这些寄存器状态。
中断处理逻辑:根据中断源的不同,编写相应的处理逻辑。
外部中断配置与使用
GPIO中断配置
GPIO(GeneralPurposeInput/Output)中断是TM4C123系列单片机中最常见的外部中断之一。通过配置GPIO端口,使之在引脚状态变化时触发中断,可以实现对外部事件的实时响应。
配置步骤
使能GPIO时钟:通过SYSCTL_RCGCGPIO寄存器使能GPIO模块的时钟。
配置GPIO引脚:通过GPIO_DIR和GPIO_DEN寄存器配置引脚为输入模式,并使能数字功能。
配置中断触发类型:通过GPIO_IES和GPIO_IS寄存器配置中断触发类型(上升沿、下降沿或双边沿)。
使能中断:通过GPIO_IM寄存器使能中断。
配置中断优先级:通过NVIC寄存器配置中断优先级。
编写ISR:编写对应的中断服务例程。
示例代码
以下是一个使用GPIO端口