中断向量表 异常相量表 中断向量(中断函数入口地址)ARM和X86异常向量表不同

120 篇文章 23 订阅
106 篇文章 8 订阅
中断向量表是STM32中存放中断服务函数地址的数组,位于Flash区的0x00000000地址。每个中断向量对应特定中断优先级,启动文件会预置中断服务函数地址。当中断发生时,CPU通过向量找到服务函数地址并执行。异常向量表类似,用于处理不同类型的异常情况,如Reset、SWI、DataAbort等。中断和异常向量表是处理器响应中断和异常的基础,确保系统能正确处理中断请求。
摘要由CSDN通过智能技术生成

STM32的中断向量表是干什么的?到底有什么用?它放在哪里?

一、中断向量表里有什么?它放在那里?到底有什么用?
1、中断向量表实际上就是存放在Code区(也就是STM32内部的Flash区)从0x00000000地址开始的一个数组,数组的成员为4个字节,而且这些数组在启动文件的时候已经初始化好。

2、STM32根据内核和外设中断优先级,同一标号,标号越小,优先级越大。然后把内核和外设的中断服务函数的地址放在这个数组里面,数组的下标跟中断的优先级对应,我们也把这个中断的编号叫做中断向量。

3、在启动文件执行的时候,内核和每个外设的中断服务函数的地址都是已经确定好的,地址就存放在中断向量表中,而且在启动文件里面已经写好了中断服务函数,只是这些中断服务函数为空,而且带[weak]弱定义,那么我们就需要在C文件里面重新实现这个中断服务函数,用户写这个中断服务函数的时候,函数名必须跟启动文件里面写的中断函数名对应,因为函数名对应的就是中断服务函数的地址,如果中断服务函数名和启动文件的名字不一样,就默认启动文件里面预先写好的空的中断服务函数,而且是一个死循环,程序就会一直卡死在中断服务函数里面。

二、那内核是如何响应中断的呢?
当中断来临的时候,首先取向量,每个中断的中断向量不一样,然后根据向量查询中断向量表,根据里面的地址找到中断服务函数,从而实现整个中断的响应过程。
https://blog.csdn.net/ZDQ1431/article/details/106374285?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164056830016780271563120%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164056830016780271563120&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-12-106374285.pc_search_result_cache&utm_term=%E5%BC%82%E5%B8%B8%E5%90%91%E9%87%8F%E8%A1%A8%E5%92%8C%E4%B8%AD%E6%96%AD%E5%90%91%E9%87%8F%E8%A1%A8&spm=1018.2226.3001.4187

【中断】异常和中断的关系、异常向量表和中断向量表的关系

https://blog.csdn.net/Ivan804638781/article/details/116212899?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164056830016780271563120%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164056830016780271563120&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-2-116212899.pc_search_result_cache&utm_term=%E5%BC%82%E5%B8%B8%E5%90%91%E9%87%8F%E8%A1%A8%E5%92%8C%E4%B8%AD%E6%96%AD%E5%90%91%E9%87%8F%E8%A1%A8&spm=1018.2226.3001.4187

【嵌入式开发】ARM 异常向量表 ( 异常概念 | 异常处理流程 | 异常向量 | 汇编代码 )

异常向量概念 : 当异常发生的时候, 程序被强行从一个固定的内存地址执行, 每个种类的异常都有对应的一固定内存地址, 这个内存地址就是异常向量 ;

异常类型 : ARM 架构 支持 七种类型的异常,
1.Reset : 处理器在工作时, 突然 按下重启键, 就会触发该异常;
2.Undefined instructions : 处理器无法识别指令的异常, 处理器执行的指令是有规范的, 如果 尝试执行 不符合要求的指令, 就会进入到该异常指令对应的地址中;
3.Software interrupt (SWI) : 软中断, 软件中需要去打断处理器工作, 可以使用软中断来执行 ;
4.Prefetch Abort (instruction fetch memory abort) : 预取指令失败, ARM 在执行指令的过程中, 要先去预取指令准备执行, 如果预取指令失败, 就会产生该异常;
5.Data Abort (data access memory abort) : 读取数据失败;
6.IRQ (interrupt) : 普通中断;
7.FIQ (fast interrupt) : 快速中断, 快速中断要比普通中断响应速度要快一些;

原文链接:https://blog.csdn.net/shulianghan/article/details/80163777

x86中断向量表

https://blog.csdn.net/duguteng/article/details/7552774?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164056830016780271563120%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164056830016780271563120&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-14-7552774.pc_search_result_cache&utm_term=%E5%BC%82%E5%B8%B8%E5%90%91%E9%87%8F%E8%A1%A8%E5%92%8C%E4%B8%AD%E6%96%AD%E5%90%91%E9%87%8F%E8%A1%A8&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值