中断向量偏移是什么意思,为什么要设置中断向量偏移?它的作用是什么?
发生中断后,硬件会自动根据中断号,跳转到指定的中断入口执行相应的程序,这个入口位置通常在单片机flash地址首端,所有中断的入口连城一片区域,这个区域就是所谓的中断向量表。
如果系统是bootloader+app这种结构,bootloader通常在flash起始位置,所以中断向量表也在bootloader里,app里如果也想用中断怎么办呢,把中断向量表移到app里就是了,这个就是所谓的“设置中断向量偏移”,这个功能通常需要硬件支持,即设置一些特定寄存器。同时,代码上也需要把中断函数入口放到新的位置,这个通常通过设置编译器的参数来实现。
CPU响应中断后,必须由中断源提供地址信息,引导程序进入中断服务子程序,这些中断服务子程序的入口地址存放在中断向量表中。在内存中专门开辟了一个区域,存放中断向量表(也称中断矢量表)。某一个中断号,对应这个向量表的某一个,其地址是相对于该表的首地址的,所以叫地址偏移。