From b0153b7fc5aa9cf1f8ff901b6dc869470e56d67f Mon Sep 17 00:00:00 2001 From: Andrew Domaszek Date: Tue, 8 Nov 2016 23:42:59 -0500 Subject: [PATCH] Calculate PWM clock relative to bus clock --- targets/TARGET_Freescale/TARGET_K20XX/pwmout_api.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/targets/TARGET_Freescale/TARGET_K20XX/pwmout_api.c b/targets/TARGET_Freescale/TARGET_K20XX/pwmout_api.c index b393504591..65e9674a79 100644 --- a/targets/TARGET_Freescale/TARGET_K20XX/pwmout_api.c +++ b/targets/TARGET_Freescale/TARGET_K20XX/pwmout_api.c @@ -27,8 +27,11 @@ void pwmout_init(pwmout_t* obj, PinName pin) { PWMName pwm = (PWMName)pinmap_peripheral(pin, PinMap_PWM); MBED_ASSERT(pwm != (PWMName)NC); + uint32_t MGCOUTClock = SystemCoreClock * (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV1_MASK) >> SIM_CLKDIV1_OUTDIV1_SHIFT)); + uint32_t BusClock = MGCOUTClock / (1u + ((SIM->CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> SIM_CLKDIV1_OUTDIV2_SHIFT)); + uint32_t clkdiv = 0; - float clkval = SystemCoreClock / 1000000.0f; + float clkval = BusClock / 1000000.0f; while (clkval > 1) { clkdiv++;