mbed SDK library sources

Fork of mbed-src by mbed official

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Thu Dec 26 13:00:06 2013 +0000
Revision:
68:41613245dfd7
Synchronized with git revision fba199a9c4445231b0f38e1e113c118182635546

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

target K20D5M

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 68:41613245dfd7 1 /* mbed Microcontroller Library
mbed_official 68:41613245dfd7 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 68:41613245dfd7 3 *
mbed_official 68:41613245dfd7 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 68:41613245dfd7 5 * you may not use this file except in compliance with the License.
mbed_official 68:41613245dfd7 6 * You may obtain a copy of the License at
mbed_official 68:41613245dfd7 7 *
mbed_official 68:41613245dfd7 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 68:41613245dfd7 9 *
mbed_official 68:41613245dfd7 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 68:41613245dfd7 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 68:41613245dfd7 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 68:41613245dfd7 13 * See the License for the specific language governing permissions and
mbed_official 68:41613245dfd7 14 * limitations under the License.
mbed_official 68:41613245dfd7 15 */
mbed_official 68:41613245dfd7 16 #include "pinmap.h"
mbed_official 68:41613245dfd7 17 #include "error.h"
mbed_official 68:41613245dfd7 18
mbed_official 68:41613245dfd7 19 void pin_function(PinName pin, int function) {
mbed_official 68:41613245dfd7 20 if (pin == (PinName)NC)
mbed_official 68:41613245dfd7 21 return;
mbed_official 68:41613245dfd7 22
mbed_official 68:41613245dfd7 23 uint32_t port_n = (uint32_t)pin >> PORT_SHIFT;
mbed_official 68:41613245dfd7 24 uint32_t pin_n = (uint32_t)(pin & 0x7C) >> 2;
mbed_official 68:41613245dfd7 25
mbed_official 68:41613245dfd7 26 SIM->SCGC5 |= 1 << (SIM_SCGC5_PORTA_SHIFT + port_n);
mbed_official 68:41613245dfd7 27 __IO uint32_t* pin_pcr = &(((PORT_Type *)(PORTA_BASE + 0x1000 * port_n)))->PCR[pin_n];
mbed_official 68:41613245dfd7 28
mbed_official 68:41613245dfd7 29 // pin mux bits: [10:8] -> 11100000000 = (0x700)
mbed_official 68:41613245dfd7 30 *pin_pcr = (*pin_pcr & ~0x700) | (function << 8);
mbed_official 68:41613245dfd7 31 }
mbed_official 68:41613245dfd7 32
mbed_official 68:41613245dfd7 33 void pin_mode(PinName pin, PinMode mode) {
mbed_official 68:41613245dfd7 34 if (pin == (PinName)NC) { return; }
mbed_official 68:41613245dfd7 35
mbed_official 68:41613245dfd7 36 __IO uint32_t* pin_pcr = (__IO uint32_t*)(PORTA_BASE + pin);
mbed_official 68:41613245dfd7 37
mbed_official 68:41613245dfd7 38 // pin pullup bits: [1:0] -> 11 = (0x3)
mbed_official 68:41613245dfd7 39 *pin_pcr = (*pin_pcr & ~0x3) | mode;
mbed_official 68:41613245dfd7 40 }