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:
Mon Nov 11 13:30:09 2013 +0000
Revision:
46:bebbbd80dd87
Synchronized with git revision b2733e9b9af906952b295cd6abcf916bf79780ab

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 46:bebbbd80dd87 1 /* mbed Microcontroller Library
mbed_official 46:bebbbd80dd87 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 46:bebbbd80dd87 3 *
mbed_official 46:bebbbd80dd87 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 46:bebbbd80dd87 5 * you may not use this file except in compliance with the License.
mbed_official 46:bebbbd80dd87 6 * You may obtain a copy of the License at
mbed_official 46:bebbbd80dd87 7 *
mbed_official 46:bebbbd80dd87 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 46:bebbbd80dd87 9 *
mbed_official 46:bebbbd80dd87 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 46:bebbbd80dd87 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 46:bebbbd80dd87 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 46:bebbbd80dd87 13 * See the License for the specific language governing permissions and
mbed_official 46:bebbbd80dd87 14 * limitations under the License.
mbed_official 46:bebbbd80dd87 15 */
mbed_official 46:bebbbd80dd87 16 #include "pinmap.h"
mbed_official 46:bebbbd80dd87 17 #include "error.h"
mbed_official 46:bebbbd80dd87 18
mbed_official 46:bebbbd80dd87 19 __IO uint32_t* IOCON_REGISTERS[18] = {
mbed_official 46:bebbbd80dd87 20 &LPC_IOCON->PIO0_0 , &LPC_IOCON->PIO0_1 , &LPC_IOCON->PIO0_2 ,
mbed_official 46:bebbbd80dd87 21 &LPC_IOCON->PIO0_3 , &LPC_IOCON->PIO0_4 , &LPC_IOCON->PIO0_5 ,
mbed_official 46:bebbbd80dd87 22 &LPC_IOCON->PIO0_6 , &LPC_IOCON->PIO0_7 , &LPC_IOCON->PIO0_8 ,
mbed_official 46:bebbbd80dd87 23 &LPC_IOCON->PIO0_9 , &LPC_IOCON->PIO0_10, &LPC_IOCON->PIO0_11,
mbed_official 46:bebbbd80dd87 24 &LPC_IOCON->PIO0_12, &LPC_IOCON->PIO0_13, &LPC_IOCON->PIO0_14,
mbed_official 46:bebbbd80dd87 25 &LPC_IOCON->PIO0_15, &LPC_IOCON->PIO0_16, &LPC_IOCON->PIO0_17,
mbed_official 46:bebbbd80dd87 26 };
mbed_official 46:bebbbd80dd87 27
mbed_official 46:bebbbd80dd87 28 void pin_function(PinName pin, int function) {
mbed_official 46:bebbbd80dd87 29
mbed_official 46:bebbbd80dd87 30 }
mbed_official 46:bebbbd80dd87 31
mbed_official 46:bebbbd80dd87 32 void pin_mode(PinName pin, PinMode mode) {
mbed_official 46:bebbbd80dd87 33 if (pin == (uint32_t)NC) { return; }
mbed_official 46:bebbbd80dd87 34
mbed_official 46:bebbbd80dd87 35 if ((pin == 10) || (pin == 11)) {
mbed_official 46:bebbbd80dd87 36 // True open-drain pins can be configured for different I2C-bus speeds
mbed_official 46:bebbbd80dd87 37 return;
mbed_official 46:bebbbd80dd87 38 }
mbed_official 46:bebbbd80dd87 39
mbed_official 46:bebbbd80dd87 40 __IO uint32_t *reg = IOCON_REGISTERS[pin];
mbed_official 46:bebbbd80dd87 41
mbed_official 46:bebbbd80dd87 42 if (mode == OpenDrain) {
mbed_official 46:bebbbd80dd87 43 *reg |= (1 << 10);
mbed_official 46:bebbbd80dd87 44 } else {
mbed_official 46:bebbbd80dd87 45 uint32_t tmp = *reg;
mbed_official 46:bebbbd80dd87 46 tmp &= ~(0x3 << 3);
mbed_official 46:bebbbd80dd87 47 tmp |= (mode & 0x3) << 3;
mbed_official 46:bebbbd80dd87 48 *reg = tmp;
mbed_official 46:bebbbd80dd87 49 }
mbed_official 46:bebbbd80dd87 50 }