打印
[APM32F0]

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

[复制链接]
1240|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
APM32F072中断向量表的重映射到SRAM
最近使用到APM32F072的芯片,发现这个芯片的中断向量表的重映射和其他芯片不同,在SDK中没有找到SCB->VTOR这个寄存器。这样就无法实现中断向量表的偏移。這樣就需要我们把程序的中断向量表重新映射到SRAM的起始地址0x20000000.
                              
0x8001000是程序的起始地址,中断向量表存储在Flash的位置,打开startup_apm32f072.s,可以看到有48个中断向量,每个占用4个字节,那样我们就需要在SRAM中划出192个字节去存储这个中断向量表
这样我们就需要把SRAM的配置从原来的
改为
再定义一个__IO uint32_t VectorTable[48]__attribute__((at(0x20000000)));存放在SRAM起始地址的32位数组,用来复制中断向量表就可以了,
把地址0x8001000处的中断向量表复制到SRAM上,最后通过SYSCFG->CFG1寄存器的MMSEL选择0x11,存储映射选择为嵌入式SRAM映射地址,使得重映射到SRAM上

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

使用特权

评论回复
沙发
JimN| | 2022-5-10 22:12 | 只看该作者
学习了

使用特权

评论回复
板凳
fuqinyyy| | 2022-5-11 07:52 | 只看该作者
操作原理基本一致

使用特权

评论回复
地板
james03| | 2022-5-11 17:29 | 只看该作者
这么来看,怎么感觉和STM8一个用法呢,其他家的M0内核都是可以将向量表重定向的

使用特权

评论回复
5
bestwell| | 2022-10-10 17:38 | 只看该作者
将APP的中断向量表拷贝到SRAM里面去?  

使用特权

评论回复
6
macpherson| | 2022-10-10 17:52 | 只看该作者
重映射中断向量表的时候,一般要重映射到RAM中,不知道是不是IAP相关的代码影响到了这个内存值的变化

使用特权

评论回复
7
selongli| | 2022-10-10 20:15 | 只看该作者
要正确产生中断向量处理,则需要中断向量复制到SRAM并重新映射吧  

使用特权

评论回复
8
wwppd| | 2022-10-10 20:49 | 只看该作者
0地址处的中断向量表,通常是ROM地址。   

使用特权

评论回复
9
kmzuaz| | 2022-10-10 21:26 | 只看该作者
用自带的中断向量表来替换吗               

使用特权

评论回复
10
burgessmaggie| | 2022-10-10 22:11 | 只看该作者
把中断向量表放到RAM中,加快程序的运行速度

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

4

帖子

0

粉丝