详解中断向量表:启动方式与内存布局

需积分: 5 2 下载量 68 浏览量 更新于2024-07-03 收藏 929KB DOCX 举报
中断向量是微控制器设计中的重要概念,特别是在嵌入式系统中,如STM32系列。它们在系统启动初期和中断管理中扮演关键角色。以下是对中断向量的详细讲解: 1. **中断向量表的位置**: 在系统刚引导时,中断向量表通常存储在内存的低地址部分,即0x00000到0x0003FF这一KB空间内,每个中断向量占用4个字节,总共可以存储256个中断向量。在实模式下,尽管寻址范围只有1MB,但每个中断向量需要4字节的原因是中断服务程序的地址由两部分组成:段值(2字节)和偏移值(另外2字节),总共正好4个字节。 2. **中断向量表的内容**: 中断向量表实际上是位于STM32 Flash区域的Code区(从0x00000000开始)的预初始化数组,每个元素代表一个中断服务函数的入口地址,这些地址根据中断优先级进行排序。中断编号即中断向量,与中断服务函数在向量表中的索引相对应。 3. **中断响应流程**: 当中断发生时,处理器首先读取对应的中断向量,每个中断向量对应一个不同的跳转指令。通过向量表查询,CPU找到中断服务函数的具体地址并执行,从而触发中断处理流程。在这个过程中,中断服务函数的地址在启动文件中预先设定为弱定义,用户需要在C代码中重新实现并提供实际功能,以避免执行启动文件中的空函数,防止程序卡死。 4. **中断向量表的加载与中断服务程序**: 中断向量表的加载是自动完成的,通常在系统启动时由固件或引导程序完成。中断向量表包含的是跳转指令,这些指令引导CPU从特定内存位置开始执行中断服务程序。由于存储空间限制,每个中断向量仅能存储一条指令,因此通常选择跳转指令以便于快速定位中断处理代码。 中断向量表在嵌入式系统中负责中断的管理和路由,通过存储中断服务函数的地址,确保在中断发生时能够准确地调用相应的处理代码。理解中断向量的工作原理对于开发高效稳定的嵌入式应用程序至关重要。