在STM32F103等Cortex-m3/m4内核的单片机上可以通过设置SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;该寄存器的值来实现中断向量表的重定义。关于Cortex M3/M4中断向量表重映射问题会单独一篇文章详细介绍,此篇主要讲解关于M0的,要问为什么要做中断向量表重映射也会单独一篇文章详细介绍。与M3/M4不同的是在STM32F0xx系列以Cortex-m0为内核的单片机中却怎么也找不到这个设置中断向量表的寄存器,可是在ST提供的固件库里,我却没有发现类似于stm32f10x固件库中的voidNVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset)接口,浏览了一下Cortex-M0的Programmingmanual,原来M0并没有SCB->VTOR这个寄存器,难怪ST的库里没有提供NVIC_SetVectorTable这个接口。
通过查阅 Reference manual文档(RM0360)中找到以下说明:
可以通过以下方法来实现中断向量表重定义。