STM32F0的IAP用戶程序中斷向量表的設(shè)置
//Cortex-M0內(nèi)核中斷向量共有48個。
//由于M0內(nèi)核不具有M3、M4內(nèi)核的中斷向量表重定位功能,須采用以下方式解決IAP向量問題:
// 1:復(fù)制用戶代碼中的中斷向量表到SRAM首地址
// 2: 開啟SRAM的重映射功能,將SRAM的地址映射到0x00000000
// 3: MDK設(shè)置RAM運行地址時,要跳過前48個地址(地址為32位,共192字節(jié)),中斷向量表
// 不能被操作,否則程序運行將出錯。
// 中斷向量表起始位置位于編譯好的用戶代碼的首地址,共48個地址。
voidNVIC_SetVectorTable(void)
{
uint8_ti;
uint32_t*pVecTab=(uint32_t*)(0x20000000);
//復(fù)制中斷向量表到SRAM首地址
for(i=0;i<48;i++)
{
*(pVecTab++)=*(__IOuint32_t*)(USER_CODE_ADDR+(i<<2));
}
//開啟SYSCFG時鐘
__SYSCFG_CLK_ENABLE();
//重映射SRAM地址到0x00000000
__HAL_REMAPMEMORY_SRAM();
}