mbed library with additional peripherals for ST F401 board

Fork of mbed-src by mbed official

This mbed LIB has additional peripherals for ST F401 board

  • UART2 : PA_3 rx, PA_2 tx
  • UART3 : PC_7 rx, PC_6 tx
  • I2C2 : PB_3 SDA, PB_10 SCL
  • I2C3 : PB_4 SDA, PA_8 SCL
Committer:
mbed_official
Date:
Mon Jan 13 10:45:05 2014 +0000
Revision:
72:248c61396e08
Synchronized with git revision f1904ba15c06215a7530efd2d5a16c25af9d29ff

Full URL: https://github.com/mbedmicro/mbed/commit/f1904ba15c06215a7530efd2d5a16c25af9d29ff/

KL46Z: Added Sleep, LED3 and LED4 definitions, switches

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 72:248c61396e08 1 /* mbed Microcontroller Library
mbed_official 72:248c61396e08 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 72:248c61396e08 3 *
mbed_official 72:248c61396e08 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 72:248c61396e08 5 * you may not use this file except in compliance with the License.
mbed_official 72:248c61396e08 6 * You may obtain a copy of the License at
mbed_official 72:248c61396e08 7 *
mbed_official 72:248c61396e08 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 72:248c61396e08 9 *
mbed_official 72:248c61396e08 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 72:248c61396e08 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 72:248c61396e08 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 72:248c61396e08 13 * See the License for the specific language governing permissions and
mbed_official 72:248c61396e08 14 * limitations under the License.
mbed_official 72:248c61396e08 15 */
mbed_official 72:248c61396e08 16 #include "sleep_api.h"
mbed_official 72:248c61396e08 17 #include "cmsis.h"
mbed_official 72:248c61396e08 18
mbed_official 72:248c61396e08 19 //Normal wait mode
mbed_official 72:248c61396e08 20 void sleep(void)
mbed_official 72:248c61396e08 21 {
mbed_official 72:248c61396e08 22 SMC->PMPROT = SMC_PMPROT_AVLLS_MASK | SMC_PMPROT_ALLS_MASK | SMC_PMPROT_AVLP_MASK;
mbed_official 72:248c61396e08 23
mbed_official 72:248c61396e08 24 //Normal sleep mode for ARM core:
mbed_official 72:248c61396e08 25 SCB->SCR = 0;
mbed_official 72:248c61396e08 26 __WFI();
mbed_official 72:248c61396e08 27 }
mbed_official 72:248c61396e08 28
mbed_official 72:248c61396e08 29 //Very low-power stop mode
mbed_official 72:248c61396e08 30 void deepsleep(void)
mbed_official 72:248c61396e08 31 {
mbed_official 72:248c61396e08 32 //Check if PLL/FLL is enabled:
mbed_official 72:248c61396e08 33 uint32_t PLL_FLL_en = (MCG->C1 & MCG_C1_CLKS_MASK) == MCG_C1_CLKS(0);
mbed_official 72:248c61396e08 34
mbed_official 72:248c61396e08 35 SMC->PMPROT = SMC_PMPROT_AVLLS_MASK | SMC_PMPROT_ALLS_MASK | SMC_PMPROT_AVLP_MASK;
mbed_official 72:248c61396e08 36 SMC->PMCTRL = SMC_PMCTRL_STOPM(2);
mbed_official 72:248c61396e08 37
mbed_official 72:248c61396e08 38 //Deep sleep for ARM core:
mbed_official 72:248c61396e08 39 SCB->SCR = 1<<SCB_SCR_SLEEPDEEP_Pos;
mbed_official 72:248c61396e08 40
mbed_official 72:248c61396e08 41 __WFI();
mbed_official 72:248c61396e08 42
mbed_official 72:248c61396e08 43 //Switch back to PLL as clock source if needed
mbed_official 72:248c61396e08 44 //The interrupt that woke up the device will run at reduced speed
mbed_official 72:248c61396e08 45 if (PLL_FLL_en) {
mbed_official 72:248c61396e08 46 if (MCG->C6 & (1<<MCG_C6_PLLS_SHIFT) != 0) /* If PLL */
mbed_official 72:248c61396e08 47 while((MCG->S & MCG_S_LOCK0_MASK) == 0x00U); /* Wait until locked */
mbed_official 72:248c61396e08 48 MCG->C1 &= ~MCG_C1_CLKS_MASK;
mbed_official 72:248c61396e08 49 }
mbed_official 72:248c61396e08 50
mbed_official 72:248c61396e08 51 }