问题描述
大多数情况下,我在项目中使用STM32F1xx MCU。在该MCU中,给出了向量表偏移量:
#define VECT_TAB_OFFSET 0x00000000U //copied from system_stm32f1xx.c
在使用位于偏移量 0x00000000
的引导加载程序的情况下,我需要更改这些偏移量我的主程序位于偏移量0x0000D800。
现在我要使用为STM32F0xx上的STM32F1xx制作的引导程序。一切都很相似,但正如我所见,STM32F072没有向量表偏移。
我了解到,引导加载程序有必要将VTOR复制到RAM并将其移动。
我无法编写ASM代码,是否有示例或说明该怎么做?还是有一种简单的方法来添加偏移地址?
解决方法
您是正确的,Cortex M0没有VTOR
寄存器,但是STM32提供了一种使用SYSCFG->CFGR1
重新映射运行时在0x00000000出现的内容的方法。 / p>
您可以告诉链接程序脚本将向量表放在嵌入式SRAM的开头,然后使用上述寄存器的MEM_MODE
位将其重新映射到0x00000000。