本帖最后由 jay8830095 于 2019-11-27 19:08 编辑
根据CM0的中断向量的映射,使用下面代码;例如我APP地址:0x08006000;
我把这块地址的中断向量表拷贝到RAM的其实地址,例如0x2000000 总大小0xc0限制住;
然后进行重映射,这样系统就可以找到APP里面的中断列表,但是实际上APP无法引起中断;
我的代码如下:
#define APPLICATION_ADDRESS ((uint32_t)0x08003000)
VectorTable 这个变量限制到0x2000000,大小预留了512bytes;
static uint8_t i = 0;
static uint32_t tmpCfgr;
__HAL_RCC_SYSCFG_CLK_ENABLE();
bootmode = SYSCFG->CFGR1;
for(i = 0; i < 48; i++)
{
VectorTable = (*( uint32_t*)(APPLICATION_ADDRESS + (i<<2))) ;
}
//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;设置不了映射模式,一直是0x00,我想设置成0x03
|