aboutsummaryrefslogtreecommitdiff
path: root/wirish/boards.cpp
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-04-01 02:33:53 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2011-04-05 13:59:33 -0400
commit6661d006e60dd8a1c19b5a0fdeb64b5383f948a1 (patch)
treee1d4c443e61625c7c3e962c7dc1e6d7b290ad886 /wirish/boards.cpp
parentbff2efbb430247e503077b26f13faafd46254f76 (diff)
NVIC and SCB refactor
Diffstat (limited to 'wirish/boards.cpp')
-rw-r--r--wirish/boards.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/wirish/boards.cpp b/wirish/boards.cpp
index 1c2b1c7..9e25eeb 100644
--- a/wirish/boards.cpp
+++ b/wirish/boards.cpp
@@ -43,13 +43,14 @@
static void setupFlash(void);
static void setupClocks(void);
+static void setupNVIC(void);
static void setupADC(void);
static void setupTimers(void);
void init(void) {
setupFlash();
setupClocks();
- nvic_init();
+ setupNVIC();
systick_init(SYSTICK_RELOAD_VAL);
gpio_init_all();
afio_init();
@@ -90,6 +91,18 @@ static void setupClocks() {
rcc_set_prescaler(RCC_PRESCALER_APB2, RCC_APB2_HCLK_DIV_1);
}
+static void setupNVIC() {
+#ifdef VECT_TAB_FLASH
+ nvic_init(USER_ADDR_ROM, 0);
+#elif defined VECT_TAB_RAM
+ nvic_init(USER_ADDR_RAM, 0);
+#elif defined VECT_TAB_BASE
+ nvic_init((uint32)0x08000000, 0);
+#else
+#error "You must select a base address for the vector table."
+#endif
+}
+
static void adcDefaultConfig(const adc_dev* dev);
static void setupADC() {