From 4196e0530de89573f1afc971afea69fbf0563458 Mon Sep 17 00:00:00 2001 From: Paul Staron Date: Tue, 10 Mar 2015 22:53:59 +0000 Subject: [PATCH] K20xx sleep.c update Utilised Header file mask defines. Tested InterruptIn and timer WakeUp --- .../hal/TARGET_Freescale/TARGET_K20XX/sleep.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20XX/sleep.c b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20XX/sleep.c index 5a563e2670..6ccb7e5d88 100644 --- a/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20XX/sleep.c +++ b/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_K20XX/sleep.c @@ -48,16 +48,21 @@ void deepsleep(void) while((MCG->S & MCG_S_LOCK0_MASK) == 0x00U); /* Wait until locked */ MCG->C1 &= ~MCG_C1_CLKS_MASK; #else - MCG->C1 = (uint8_t)0x9Au; - MCG->C6 = (uint8_t)0x00u; + // MCG->C1: CLKS=2,FRDIV=3,IREFS=0,IRCLKEN=1,IREFSTEN=0 + MCG->C1 = MCG_C1_CLKS(2) | MCG_C1_FRDIV(3) | MCG_C1_IRCLKEN_MASK; + // MCG->C6: LOLIE=0,PLLS=0,CME=0,VDIV0=0 + MCG->C6 = MCG_C6_VDIV0(0); while((MCG->S & MCG_S_OSCINIT0_MASK) == 0u) { } // Check that the oscillator is running while((MCG->S & 0x0Cu) != 0x08u) { } // Wait until external reference clock is selected as MCG output - MCG->C5 = (uint8_t)0x05u; - MCG->C6 = (uint8_t)0x43u; + // MCG->C5: PLLCLKEN=0,PLLSTEN=0,PRDIV0=3 + MCG->C5 = MCG_C5_PRDIV0(5); + // MCG->C6: LOLIE=0,PLLS=1,CME=0,VDIV0=3 + MCG->C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV0(3); while((MCG->S & 0x0Cu) != 0x08u) { } // Wait until external reference clock is selected as MCG output while((MCG->S & MCG_S_PLLST_MASK) == 0u) { } // Wait until the source of the PLLS clock has switched to the PLL - while((MCG->S & MCG_S_LOCK0_MASK) == 0u) { } // Wait until locked - MCG->C1 = (uint8_t)0x22u; + while((MCG->S & MCG_S_LOCK0_MASK) == 0u) { } // Wait until locked + // MCG->C1: CLKS=0,FRDIV=2,IREFS=0,IRCLKEN=1,IREFSTEN=0 + MCG->C1 = MCG_C1_FRDIV(2) | MCG_C1_IRCLKEN_MASK;; while((MCG->S & 0x0Cu) != 0x0Cu) { } // Wait until output of the PLL is selected while((MCG->S & MCG_S_LOCK0_MASK) == 0u) { } // Wait until locked #endif