aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/stm32/main.c3
-rw-r--r--src/stm32/stm32f1.c5
-rw-r--r--src/stm32/stm32f4.c5
3 files changed, 10 insertions, 3 deletions
diff --git a/src/stm32/main.c b/src/stm32/main.c
index 13729216..6d9290fd 100644
--- a/src/stm32/main.c
+++ b/src/stm32/main.c
@@ -5,7 +5,6 @@
// This file may be distributed under the terms of the GNU GPLv3 license.
#include "autoconf.h" // CONFIG_MCU
-#include "board/armcm_boot.h" // VectorTable
#include "command.h" // DECL_CONSTANT_STR
#include "internal.h" // clock_setup
#include "sched.h" // sched_main
@@ -23,8 +22,6 @@ DECL_COMMAND_FLAGS(command_reset, HF_IN_SHUTDOWN, "reset");
int
main(void)
{
- SCB->VTOR = (uint32_t)VectorTable;
-
clock_setup();
sched_main();
diff --git a/src/stm32/stm32f1.c b/src/stm32/stm32f1.c
index e1ef56aa..8723c6d1 100644
--- a/src/stm32/stm32f1.c
+++ b/src/stm32/stm32f1.c
@@ -5,6 +5,7 @@
// This file may be distributed under the terms of the GNU GPLv3 license.
#include "autoconf.h" // CONFIG_CLOCK_REF_8M
+#include "board/armcm_boot.h" // VectorTable
#include "board/irq.h" // irq_disable
#include "board/usb_cdc.h" // usb_request_bootloader
#include "internal.h" // enable_pclock
@@ -125,6 +126,10 @@ usb_request_bootloader(void)
void
clock_setup(void)
{
+ // The SystemInit() code alters VTOR - restore it
+ SCB->VTOR = (uint32_t)VectorTable;
+
+ // Configure and enable PLL
uint32_t cfgr;
if (CONFIG_CLOCK_REF_8M) {
// Configure 72Mhz PLL from external 8Mhz crystal (HSE)
diff --git a/src/stm32/stm32f4.c b/src/stm32/stm32f4.c
index e6f3f14d..6dfa2f68 100644
--- a/src/stm32/stm32f4.c
+++ b/src/stm32/stm32f4.c
@@ -5,6 +5,7 @@
// This file may be distributed under the terms of the GNU GPLv3 license.
#include "autoconf.h" // CONFIG_CLOCK_REF_8M
+#include "board/armcm_boot.h" // VectorTable
#include "board/usb_cdc.h" // usb_request_bootloader
#include "command.h" // DECL_CONSTANT_STR
#include "internal.h" // enable_pclock
@@ -176,6 +177,10 @@ enable_clock_stm32f446(void)
void
clock_setup(void)
{
+ // The SystemInit() code alters VTOR - restore it
+ SCB->VTOR = (uint32_t)VectorTable;
+
+ // Configure and enable PLL
if (CONFIG_MACH_STM32F405 || CONFIG_MACH_STM32F407)
enable_clock_stm32f40x();
else