Как изменить SCB-> VTOR в приложении (stm32f4 HAL)? - PullRequest
0 голосов
/ 03 октября 2019

Я создаю загрузчик для STM32F4 и создаю пользовательское приложение с изменениями значения VECT_TAB_OFFSET вручную для SCB-> VTOR в файле system_stm32f4xx.c, но если я делаю это в приложении. Он не работает должным образом.

Я вызвал SCB-> VTOR = 0x8040000 в начале main (), но это не сработало. BOOTLOADER USER APPLICATION

1 Ответ

0 голосов
/ 04 октября 2019

Код запуска 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
...