学习笔记 什么是中断向量以及配置中断服务函数的原理
2017-11-23 14:11
661 查看
中断向量
中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址。
运行过程
在中断响应过程中,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平台部分中断号类型声明和中断向量表编号声明
如有错误,欢迎指正!
中断源的识别标志,可用来形成相应的中断服务程序的入口地址或存放中断服务程序的首地址。
运行过程
在中断响应过程中,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平台部分中断号类型声明和中断向量表编号声明
如有错误,欢迎指正!
相关文章推荐
- 微软StockTrader 2.03 学习笔记(2)--什么是配置网站和配置服务、配置存储库
- stm32学习笔记之USB中断配置初始化函数
- 微软StockTrader 2.03 学习笔记(3)--配置网站和配置服务在StockTrader中的使用示例
- Flex + BlazeDS 学习笔记 (一) --- BlazeDS的功能原理及配置实例
- Iptables服务全攻略之实战配置 之学习笔记(1)
- ARM 学习笔记(二) S3C2440 中断配置
- 微软StockTrader 2.03 学习笔记(5)--配置服务实现示例指南(一)
- Linux学习笔记:REHL AS4的上网配置,Http服务安装及配置,ftp服务的安装及配置
- AD学习笔记8——活动目录服务的基本安装和配置
- 微软StockTrader 4.0 学习笔记--配置服务实现示例指南(一)
- 菜鸟学习linux笔记与练习-----第二天。一些基本命令以及初级网络配置
- 分词算法学习笔记之fscanf函数以及EOF
- AD学习笔记8——活动目录服务的基本安装和配置
- 嵌入式Linux学习3---ubuntu下配置SSH服务以及SecureCRT工具的使用
- 菜鸟学习linux笔记与练习-----一些基本命令以及初级网络配置
- rh9 linux服务配置学习笔记---------Apache
- 微软StockTrader 2.03 学习笔记(8)--配置服务实现示例指南(四)
- 学习笔记:使用Web Service Software Factory开发简易留言本服务以及Mobile调用实现-1.创建Service
- 【学习笔记】String.valueOf(object obj)和object.toString()以及String(object)之间有什么异同?
- jdk的配置和JVM内部原理 java 基础学习笔记 第一天