summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/stm/ao_timer.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/stm/ao_timer.c b/src/stm/ao_timer.c
index 099a0ece..0c44f352 100644
--- a/src/stm/ao_timer.c
+++ b/src/stm/ao_timer.c
@@ -69,7 +69,19 @@ ao_timer_set_adc_interval(uint8_t interval) __critical
}
#endif
-#define TIMER_10kHz (AO_PCLK1 / 10000)
+/*
+ * According to the STM clock-configuration, timers run
+ * twice as fast as the APB1 clock *if* the APB1 prescaler
+ * is greater than 1.
+ */
+
+#if AO_APB1_PRESCALER > 1
+#define TIMER_23467_SCALER 2
+#else
+#define TIMER_23467_SCALER 1
+#endif
+
+#define TIMER_10kHz ((AO_PCLK1 * TIMER_23467_SCALER) / 10000)
void
ao_timer_init(void)