//Cortex-M0内核中断向量共有48个。
//由于M0内核不具有M3、M4内核的中断向量表重定位功能,须采用以下方式解决IAP向量问题:
// 1:复制用户代码中的中断向量表到SRAM首地址
// 2: 开启SRAM的重映射功能,将SRAM的地址映射到0x00000000
// 3: MDK设置RAM运行地址时,要跳过前48个地址(地址为32位,共192字节),中断向量表
// 不能被操作,否则程序运行将出错。
// 中断向量表起始位置位于编译好的用户代码的首地址,共48个地址。
//由于M0内核不具有M3、M4内核的中断向量表重定位功能,须采用以下方式解决IAP向量问题:
// 1:复制用户代码中的中断向量表到SRAM首地址
// 2: 开启SRAM的重映射功能,将SRAM的地址映射到0x00000000
// 3: MDK设置RAM运行地址时,要跳过前48个地址(地址为32位,共192字节),中断向量表
// 不能被操作,否则程序运行将出错。
// 中断向量表起始位置位于编译好的用户代码的首地址,共48个地址。
void NVIC_SetVectorTable(void)
{
uint8_t i;
uint32_t *pVecTab=(uint32_t *)(0x20000000);
//复制中断向量表到SRAM首地址
for(i = 0; i < 48; i++)
{
*(pVecTab++) = *(__IO uint32_t*)(USER_CODE_ADDR + (i<<2));
}
//开启 SYSCFG 时钟
__SYSCFG_CLK_ENABLE();
//重映射 SRAM 地址到 0x00000000
__HAL_REMAPMEMORY_SRAM();
}