您的位置:首页 > 其它

学习笔记 什么是中断向量以及配置中断服务函数的原理

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平台部分中断号类型声明和中断向量表编号声明



如有错误,欢迎指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 中断 k60智能车
相关文章推荐