1、IAP中断向量表重映射
1.1、Coretext-M3与Coretext-M4:
SCB->VTOR = 0X08000000|0X20000;
__set_PRIMASK(0);
在System Control Block中存在一个向量表偏移量寄存器 VTOR(0xE000ED08),系统产生中断后,内核通过这个寄存器的值来找到中断向量表的地址,进而执行中断例程代码,
M3/M4的这个VTOR寄存器一开始时它的值也是为默认值0,只不过在程序运行到SystemInit()函数后,在代码中明确对其进行了修改
1.2、Coretext-M0:
__enable_irq();
memcpy((void*)0x20000000, (void*)0x08000800, 0xB4);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
对于M0来说,中断向量表的地址固定在地址0x0000 0000上