如题,CM0的内核,因为没有Vector,需要把外部的ram重映射到0x0000位置;ram里面保存了跳转后的中断向量表,但是发现使用代码重映射没有效果;
具体代码如下:
static uint8_t i = 0;
//static uint32_t IrqAddr = 0;
static uint32_t tmpCfgr;
//static uint32_t VectorTable[48]={0};
__HAL_RCC_SYSCFG_CLK_ENABLE();
bootmode = SYSCFG->CFGR1;
for(i = 0; i < 48; i++)
{
VectorTable[i] = (*( uint32_t*)(APPLICATION_ADDRESS + (i<<2))) ;
}
/* USER CODE BEGIN Init */
//memcpy((void*)0x20000000, (void*)VectorTable, 0xC0);
//__HAL_SYSCFG_REMAPMEMORY_SRAM();
tmpCfgr = SYSCFG->CFGR1;
tmpCfgr &= (uint32_t)(~SYSCFG_CFGR1_MEM_MODE_Msk);
tmpCfgr |= (uint32_t)0x03;
SYSCFG->CFGR1 = tmpCfgr;
bootmode = SYSCFG->CFGR1;
HAL 库的代码 试过也不行,__HAL_SYSCFG_REMAPMEMORY_SRAM();
目前就是发现这个映射不起作用,中断无法执行;
|