学习笔记 什么是中断向量以及配置中断服务函数的原理
来源:互联网 发布:qt tcp 端口监听 编辑:程序博客网 时间:2024/05/18 06:22
中断向量
中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址。
运行过程
在中断响应过程中,CPU通过从接口电路获取的中断类型号(中断向量号)计算对应中断向量在表中的位置,并从中断向量表中获取中断向量,将程序流程转向中断服务程序的入口地址。
图一 中断函数声明
图二 配置中断服务函数
图三 设置中断服务函数的底层库函数
举例
上图是利用山外K60库配置PORTC和DMA0的中断服务函数实例
图二中PORTC_IRQHandler是需要设置的中断服务程序(用户自己设置),PORTC_VECT0Rn是中断向量表中的中断向量(K60底层已设置)。set_vector_handler函数的意义是将PORTC_IRQHandler的地址(PORTC_IRQHandler在图一中是定义的函数名,在图二中代表该函数在内存中的首地址)“赋值”给中断向量PORTC_VECT0Rn。
简单来说,set_vector_handler(PORTC_VECT0Rn, PORTC_IRQHandler);的作用是把PORTC_IRQHandler添加到中断向量表中。
K60在获取中断类型号(码)后,经计算(中断类型码*4)得到该中断类型服务子程序入口地址在中断向量表的位置(即中断向量PORTC_VECT0Rn),然后从中取出这个地址(PORTC_IRQHandler),转到相应的子程序(void PORTC_IRQHandle())。
简单来说,中断向量指向地址,该地址下存放的是用户需要在中断时执行的函数。
先获取中断类型号,再在中断向量表中找中断向量,指向一个地址,执行其中的中断服务程序。
下图为山外K60平台部分中断号类型声明和中断向量表编号声明
如有错误,欢迎指正!
- 学习笔记 什么是中断向量以及配置中断服务函数的原理
- C51 单片机的中断号以及中断向量
- 【单片机笔记】51内核的中断及中断向量
- stm32学习笔记(八)中断服务函数与函数调用的区别
- 中断服务函数的写法
- 中断向量的设置
- ADS/GNU 的向量中断服务函数及对其方式指定修饰符号
- 转帖:ADS/GNU 的向量中断服务函数及对其方式指定修饰符号
- stm32学习笔记之USB中断配置初始化函数
- 微机原理的中断学习
- stm32笔记:中断服务函数子函数声明。
- 关于软中断原理,以及中断栈的概念等
- STM32中断入口地址与中断服务函数的关系
- 中断流程 中断向量
- ARM7学习笔记——中断向量控制器VIC
- STM32F4学习笔记8——NIVC向量中断
- 中断向量
- 中断向量
- System call in Linux
- Python 函数和类
- [Java]“语法糖”系列(一)之方法引用(Method References)
- 清华大学冯珺:基于强化学习的关系抽取和文本分类 | 实录·PhD Talk
- 解密Airbnb的定价算法
- 学习笔记 什么是中断向量以及配置中断服务函数的原理
- 算法描述---伪代码
- Oracle查询某段日期内某个时间段的数据
- apk资源打包过程分析
- Markdown之表格的处理
- 和为S的连续正数序列
- JS获取URL中参数值的4种方法
- ServerSocketChannel
- vs平台如何查看汇编代码