项目开发过程中,有时我们向把中断向量表重映射到RAM中,本文介绍ARM cortex-m3如何将中断向量表重新映射到RAM制定的地址。
1.程序在RAM,中断向量表重映射到RAM
这种情况发生在我们将程序直接下载到RAM中去调试,执行,要想中断得以执行需要将中断向量表基地址修改为RAM中中断向量表的地址。
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET;
注意:中断向量表的地址必须是0x100(256)的整数倍。
2.程序在Flash,中断向量表重映射到RAM
SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET;
memcpy(SRAM_BASE | VECT_TAB_OFFSET, 0x08000000, n * 4);
这里的n为该芯片所有的中断向量的个数,可以在startup.s中查看,这里,同样要求,中断向量表的地址必须是0x100(256)的整数倍。