STM32F072中未提供VTOR偏移

问题描述

大多数情况下,我在项目中使用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。