STM32单片机的IAP向量问题解决方案

控制/MCU

1876人已加入

描述

//Cortex-M0内核中断向量共有48个。

//由于M0内核不具有M3、M4内核的中断向量表重定位功能,须采用以下方式解决IAP向量问题:

// 1:复制用户代码中的中断向量表到SRAM首地址

// 2: 开启SRAM的重映射功能,将SRAM的地址映射到0x00000000

// 3: MDK设置RAM运行地址时,要跳过前48个地址(地址为32位,共192字节),中断向量表

// 不能被操作,否则程序运行将出错。

// 中断向量表起始位置位于编译好的用户代码的首地址,共48个地址。

IAP
 

voidNVIC_SetVectorTable(void)

{

uint8_ti;

uint32_t*pVecTab=(uint32_t*)(0x20000000);

//复制中断向量表到SRAM首地址

for(i=0;i《48;i++)

{

*(pVecTab++)=*(__IOuint32_t*)(USER_CODE_ADDR+(i《《2));

}

//开启SYSCFG时钟

__SYSCFG_CLK_ENABLE();

//重映射SRAM地址到0x00000000

__HAL_REMAPMEMORY_SRAM();

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分