[APM32F0] APM32F072中断向量表的重映射到SRAM

[复制链接]
 楼主| 搬砖工小王 发表于 2022-5-8 20:11 | 显示全部楼层 |阅读模式
APM32F072中断向量表的重映射到SRAM
最近使用到APM32F072的芯片,发现这个芯片的中断向量表的重映射和其他芯片不同,在SDK中没有找到SCB->VTOR这个寄存器。这样就无法实现中断向量表的偏移。這樣就需要我们把程序的中断向量表重新映射到SRAM的起始地址0x20000000.
11.png
                              
0x8001000是程序的起始地址,中断向量表存储在Flash的位置,打开startup_apm32f072.s,可以看到有48个中断向量,每个占用4个字节,那样我们就需要在SRAM中划出192个字节去存储这个中断向量表
12.png
这样我们就需要把SRAM的配置从原来的
13.png
改为
14.png
再定义一个__IO uint32_t VectorTable[48]__attribute__((at(0x20000000)));存放在SRAM起始地址的32位数组,用来复制中断向量表就可以了,
15.png
把地址0x8001000处的中断向量表复制到SRAM上,最后通过SYSCFG->CFG1寄存器的MMSEL选择0x11,存储映射选择为嵌入式SRAM映射地址,使得重映射到SRAM上
16.png
17.png

到此我们在0x8001000的程序就可以正常的相应中断啦。

JimN 发表于 2022-5-10 22:12 来自手机 | 显示全部楼层
学习了
fuqinyyy 发表于 2022-5-11 07:52 来自手机 | 显示全部楼层
操作原理基本一致
james03 发表于 2022-5-11 17:29 | 显示全部楼层
这么来看,怎么感觉和STM8一个用法呢,其他家的M0内核都是可以将向量表重定向的
bestwell 发表于 2022-10-10 17:38 | 显示全部楼层
将APP的中断向量表拷贝到SRAM里面去?  
macpherson 发表于 2022-10-10 17:52 | 显示全部楼层
重映射中断向量表的时候,一般要重映射到RAM中,不知道是不是IAP相关的代码影响到了这个内存值的变化
selongli 发表于 2022-10-10 20:15 | 显示全部楼层
要正确产生中断向量处理,则需要中断向量复制到SRAM并重新映射吧  
wwppd 发表于 2022-10-10 20:49 | 显示全部楼层
0地址处的中断向量表,通常是ROM地址。   
kmzuaz 发表于 2022-10-10 21:26 | 显示全部楼层
用自带的中断向量表来替换吗               
burgessmaggie 发表于 2022-10-10 22:11 | 显示全部楼层
把中断向量表放到RAM中,加快程序的运行速度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部