Смещение VTOR не указано в STM32F072

в основном я использую микроконтроллеры STM32F1xx для своих проектов. В этом MCU задано смещение векторной таблицы:

#define VECT_TAB_OFFSET  0x00000000U //copied from system_stm32f1xx.c

Мне нужно изменить это смещение в случае использования загрузчика, расположенного по смещению 0x00000000

Моя основная программа находится по смещению 0x0000D800.

Теперь я хочу использовать свой загрузчик, созданный для STM32F1xx, на STM32F0xx. Все очень похоже, но, как я вижу, у STM32F072 нет смещения векторной таблицы.

Я читал об этом, что необходимо, чтобы загрузчик копировал VTOR в оперативную память и перемещал его.

Я не могу написать ASM-код, так что есть пример или инструкция, как это сделать? Или есть простой способ добавить адрес смещения?


person vt1111    schedule 01.10.2020    source источник
comment
Вероятно, есть пример заметки о приложении от ST для конкретной части.   -  person Lundin    schedule 01.10.2020
comment
Пробовал, но вообще не работает.   -  person vt1111    schedule 16.10.2020


Ответы (1)


Вы правы, Cortex M0 не имеет регистра VTOR, однако с вашим STM32 есть способ переназначить то, что появляется по адресу 0x00000000 во время выполнения, с помощью регистра SYSCFG->CFGR1.

Вы можете указать своему скрипту компоновщика разместить вашу векторную таблицу в начале встроенной SRAM, а затем переназначить ее на 0x00000000, используя MEM_MODE биты вышеупомянутого регистра.

person Colin    schedule 01.10.2020