原文链接:https://blog.csdn.net/xxdx_admin/article/details/122369753
通常情况下,为了产品后续的升级,程序都会分为两部分Bootloader+App,因为有两个程序,所以需要对中断向量表进行处理,否则,当程序已经跳转到app中运行,当中断产生的时候,响应函数仍然是Bootloader的中断函数,而不是app的
在STM32F103 F3内核上是可以配置寄存器SCB->VTOR设置中断向量表偏移,CH579是M0内核,并不支持这样操作,中断向量表位置固定在(地址0x00000000)位置上
解决思路:
- 将中断向量表重映射到RAM(内存)
- 根据当前运行程序将FLASH中的向量表拷贝到RAM中
解决步骤
- 将地址0x00000000的中断向量表中的全部中断函数都设置为同一个函数,用于映射
- 编写映射函数
- 修改RAM配置信息
- 根据前当前运行的程序拷贝中断向量表到RAM