APM32F072中断向量表的重映射到SRAM 最近使用到APM32F072的芯片,发现这个芯片的中断向量表的重映射和其他芯片不同,在SDK中没有找到SCB->VTOR这个寄存器。这样就无法实现中断向量表的偏移。這樣就需要我们把程序的中断向量表重新映射到SRAM的起始地址0x20000000. 0x8001000是程序的起始地址,中断向量表存储在Flash的位置,打开startup_apm32f072.s,可以看到有48个中断向量,每个占用4个字节,那样我们就需要在SRAM中划出192个字节去存储这个中断向量表 这样我们就需要把SRAM的配置从原来的 改为 再定义一个__IO uint32_t VectorTable[48]__attribute__((at(0x20000000)));存放在SRAM起始地址的32位数组,用来复制中断向量表就可以了, 把地址0x8001000处的中断向量表复制到SRAM上,最后通过SYSCFG->CFG1寄存器的MMSEL选择0x11,存储映射选择为嵌入式SRAM映射地址,使得重映射到SRAM上
到此我们在0x8001000的程序就可以正常的相应中断啦。
|