Код запуска STM32 вызывает SystemInit()
до main()
. SystemInit()
устанавливает значение SCB->VTOR
(среди прочего). SystemInit()
реализовано в предоставленном поставщиком файле system_stm32f4xx.c
. Вы можете настроить значение, присвоенное SCB-VTOR
, отредактировав значение VECT_TAB_OFFSET
, которое также определено в system_stm32f4xx.c
. (В папке вашего проекта должна быть копия system_stm32f4xx.c
, которую вы можете настроить для своего проекта.)
Если вам нужны разные значения VECT_TAB_OFFSET
для ваших загрузочных и прикладных программ, вы можете использовать препроцессорутверждение как это. (Это позволяет загрузочной и прикладной программам использовать одну и ту же копию system_stm32fxx.c
. В качестве альтернативы вы можете использовать разные копии файла для каждой программы.)
#ifdef BOOT
#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
This value must be a multiple of 0x200. */
#else
#define VECT_TAB_OFFSET 0x80000
#endif