From bf133f7737c99d5359a52abd49e465af863fa734 Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 14 Aug 2014 00:30:14 +0100 Subject: [PATCH] stmhal: Resolve question in comment about timer clock. --- stmhal/timer.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/stmhal/timer.c b/stmhal/timer.c index 30bcf2c079..b0b35740f5 100644 --- a/stmhal/timer.c +++ b/stmhal/timer.c @@ -274,8 +274,11 @@ STATIC mp_obj_t pyb_timer_init_helper(pyb_timer_obj_t *self, uint n_args, const tim_clock = HAL_RCC_GetPCLK1Freq(); } - // compute the prescaler value so TIM triggers at freq-Hz - // dpgeorge: I don't understand why we need to multiply tim_clock by 2 + // Compute the prescaler value so TIM triggers at freq-Hz + // On STM32F405/407/415/417 there are 2 cases for how the clock freq is set. + // If the APB prescaler is 1, then the timer clock is equal to its respective + // APB clock. Otherwise (APB prescaler > 1) the timer clock is twice its + // respective APB clock. See DM00031020 Rev 4, page 115. uint32_t period = MAX(1, 2 * tim_clock / vals[0].u_int); uint32_t prescaler = 1; while (period > 0xffff) {