diff options
author | Keith Packard <keithp@keithp.com> | 2016-04-13 06:11:44 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2016-04-19 23:21:30 -0400 |
commit | 3abc0fc5e4484d862709501133d35563aa0c25fa (patch) | |
tree | 4e7c66ccc064c9fbafe1f4543e92f8dfbd38ce0c | |
parent | 14fecd672807982ce6232fa3b4bdce0aebe132e8 (diff) |
altos/stmf0: Fix external interrupts
Missing a reserved address in the registers broke everything nicely,
but the priority values were also wrong - stm32f0 exposes 8 bits per
priority, like the stm32l, but it uses only the top two bits.
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | src/stmf0/ao_arch.h | 8 | ||||
-rw-r--r-- | src/stmf0/ao_exti.h | 2 | ||||
-rw-r--r-- | src/stmf0/ao_exti_stm.c | 2 | ||||
-rw-r--r-- | src/stmf0/stm32f0.h | 3 |
4 files changed, 9 insertions, 6 deletions
diff --git a/src/stmf0/ao_arch.h b/src/stmf0/ao_arch.h index 26a34c85..2597cadc 100644 --- a/src/stmf0/ao_arch.h +++ b/src/stmf0/ao_arch.h @@ -131,10 +131,10 @@ extern const uint32_t ao_radio_cal; #define AO_TIM91011_CLK (2 * AO_PCLK2) #endif -#define AO_STM_NVIC_HIGH_PRIORITY 4 -#define AO_STM_NVIC_CLOCK_PRIORITY 6 -#define AO_STM_NVIC_MED_PRIORITY 8 -#define AO_STM_NVIC_LOW_PRIORITY 10 +#define AO_STM_NVIC_HIGH_PRIORITY (0 << 6) +#define AO_STM_NVIC_CLOCK_PRIORITY (1 << 6) +#define AO_STM_NVIC_MED_PRIORITY (2 << 6) +#define AO_STM_NVIC_LOW_PRIORITY (3 << 6) void ao_lcd_stm_init(void); diff --git a/src/stmf0/ao_exti.h b/src/stmf0/ao_exti.h index ebea224d..192611bd 100644 --- a/src/stmf0/ao_exti.h +++ b/src/stmf0/ao_exti.h @@ -28,7 +28,7 @@ #define AO_EXTI_PIN_NOCONFIGURE 64 void -ao_exti_setup(struct stm_gpio *gpio, uint8_t pin, uint8_t mode, void (*callback)()); +ao_exti_setup(struct stm_gpio *gpio, uint8_t pin, uint8_t mode, void (*callback)(void)); void ao_exti_set_mode(struct stm_gpio *gpio, uint8_t pin, uint8_t mode); diff --git a/src/stmf0/ao_exti_stm.c b/src/stmf0/ao_exti_stm.c index 906392e6..910afcf7 100644 --- a/src/stmf0/ao_exti_stm.c +++ b/src/stmf0/ao_exti_stm.c @@ -110,7 +110,7 @@ ao_exti_set_mode(struct stm_gpio *gpio, uint8_t pin, uint8_t mode) { (void) gpio; uint32_t mask = 1 << pin; - + if (mode & AO_EXTI_MODE_RISING) stm_exti.rtsr |= mask; else diff --git a/src/stmf0/stm32f0.h b/src/stmf0/stm32f0.h index 30b45b15..33eb9c88 100644 --- a/src/stmf0/stm32f0.h +++ b/src/stmf0/stm32f0.h @@ -837,8 +837,11 @@ isr(tim7) struct stm_syscfg { vuint32_t cfgr1; + uint32_t reserved_04; vuint32_t exticr[4]; vuint32_t cfgr2; + uint8_t reserved_1c[0x80-0x1c]; + vuint32_t itline[31]; }; extern struct stm_syscfg stm_syscfg; |