PAGE1
PAGE1
中断系统与异常处理
中断系统和异常处理是嵌入式系统中的重要组成部分,它们使得单片机能够响应外部或内部的突发事件,从而提高系统的实时性和可靠性。在KinetisL系列中,基于MKL26Z128VFM4的中断系统和异常处理机制非常强大,能够支持多种中断源和异常类型。本节将详细介绍KinetisL系列的中断系统和异常处理机制,包括中断向量表、中断优先级、中断使能和禁止、中断服务例程(ISR)的编写和异常处理的基本原理。
中断向量表
中断向量表是中断系统的核心部分,它存储了所有中断和异常的处理入口地址。在MKL26Z128VFM4中,中断向量表通常位于闪存的起始地址,即0处。每个中断和异常都有一个固定的向量编号,对应的处理入口地址存储在中断向量表中。
中断向量表的结构(续)
中断向量表的结构如下所示:
```c
//中断向量表的定义
attribute((section(“.isr_vector”)))
void(*constg_pfnVectors[])(void)={
//核心异常
(void(*)(void))((uint32_t)__StackTop),//栈顶指针
ResetISR,//复位处理函数
(void(*)(void))NMI_Handler,//NMI处理函数
(void(*)(void))HardFault_Handler,//硬故障处理函数
(void(*)(void))MemManage_Handler,//内存管理故障处理函数
(void(*)(void))BusFault_Handler,//总线故障处理函数
(void(*)(void))UsageFault_Handler,//使用故障处理函数
0,//保留
0,//保留
0,//保留
0,//保留
(void(*)(void))SVCall_Handler,//系统调用处理函数
(void(*)(void))DebugMon_Handler,//调试监控处理函数
0,//保留
(void(*)(void))PendSV_Handler,//PendSV处理函数
(void(*)(void))SysTick_Handler,//系统滴答定时器处理函数
//外设中断
(void(*)(void))DMA0_IRQHandler,//DMA0中断
(void(*)(void))DMA1_IRQHandler,//DMA1中断
(void(*)(void))DMA2_IRQHandler,//DMA2中断
(void(*)(void))DMA3_IRQHandler,//DMA3中断
(void(*)(void))Reserved16_IRQHandler,//保留
(void(*)(void))FTFA_IRQHandler,//闪存中断
(void(*)(void))LVD_LVW_IRQHandler,//低压检测和低压警告中断
(void(*)(void))LLWU_IRQHandler,//低功耗唤醒单元中断
(void(*)(void))I2C0_IRQHandler,//I2C0中断
(void(*)(void))I2C1_IRQHandler,//I2C1中断
(void(*)(void))SPI0_IRQHandler,//SPI0中断
(void(*)(void))SPI1_IRQHandler,//SPI1中断
(void(*)(void))UART0_IRQ