mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

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:
Tue Sep 01 16:00:09 2015 +0100
Revision:
614:9d86c2ae5de0
Parent:
285:31249416b6f9
Synchronized with git revision 483bb0197fd032956a31330bd6c6eb50758f2dda

Full URL: https://github.com/mbedmicro/mbed/commit/483bb0197fd032956a31330bd6c6eb50758f2dda/

LPC81X: reduce code size and add ARM_GCC support

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 227:7bd0639b8911 16 #include "mbed_assert.h"
mbed_official 46:bebbbd80dd87 17 #include "pinmap.h"
mbed_official 285:31249416b6f9 18 #include "mbed_error.h"
mbed_official 46:bebbbd80dd87 19
mbed_official 46:bebbbd80dd87 20 __IO uint32_t* IOCON_REGISTERS[18] = {
mbed_official 46:bebbbd80dd87 21 &LPC_IOCON->PIO0_0 , &LPC_IOCON->PIO0_1 , &LPC_IOCON->PIO0_2 ,
mbed_official 46:bebbbd80dd87 22 &LPC_IOCON->PIO0_3 , &LPC_IOCON->PIO0_4 , &LPC_IOCON->PIO0_5 ,
mbed_official 46:bebbbd80dd87 23 &LPC_IOCON->PIO0_6 , &LPC_IOCON->PIO0_7 , &LPC_IOCON->PIO0_8 ,
mbed_official 46:bebbbd80dd87 24 &LPC_IOCON->PIO0_9 , &LPC_IOCON->PIO0_10, &LPC_IOCON->PIO0_11,
mbed_official 46:bebbbd80dd87 25 &LPC_IOCON->PIO0_12, &LPC_IOCON->PIO0_13, &LPC_IOCON->PIO0_14,
mbed_official 46:bebbbd80dd87 26 &LPC_IOCON->PIO0_15, &LPC_IOCON->PIO0_16, &LPC_IOCON->PIO0_17,
mbed_official 46:bebbbd80dd87 27 };
mbed_official 46:bebbbd80dd87 28
mbed_official 46:bebbbd80dd87 29 void pin_function(PinName pin, int function) {
mbed_official 614:9d86c2ae5de0 30 if (function == 0) {
mbed_official 614:9d86c2ae5de0 31 // Disable initial fixed function for P0_2, P0_3 and P0_5
mbed_official 614:9d86c2ae5de0 32 uint32_t enable = 0;
mbed_official 614:9d86c2ae5de0 33 if (pin == P0_2)
mbed_official 614:9d86c2ae5de0 34 enable = 1 << 3;
mbed_official 614:9d86c2ae5de0 35 else if (pin == P0_3)
mbed_official 614:9d86c2ae5de0 36 enable = 1 << 2;
mbed_official 614:9d86c2ae5de0 37 else if (pin == P0_5)
mbed_official 614:9d86c2ae5de0 38 enable = 1 << 6;
mbed_official 614:9d86c2ae5de0 39 LPC_SWM->PINENABLE0 |= enable;
mbed_official 614:9d86c2ae5de0 40 }
mbed_official 46:bebbbd80dd87 41 }
mbed_official 46:bebbbd80dd87 42
mbed_official 46:bebbbd80dd87 43 void pin_mode(PinName pin, PinMode mode) {
mbed_official 227:7bd0639b8911 44 MBED_ASSERT(pin != (PinName)NC);
mbed_official 227:7bd0639b8911 45
mbed_official 46:bebbbd80dd87 46 if ((pin == 10) || (pin == 11)) {
mbed_official 46:bebbbd80dd87 47 // True open-drain pins can be configured for different I2C-bus speeds
mbed_official 46:bebbbd80dd87 48 return;
mbed_official 46:bebbbd80dd87 49 }
mbed_official 46:bebbbd80dd87 50
mbed_official 46:bebbbd80dd87 51 __IO uint32_t *reg = IOCON_REGISTERS[pin];
mbed_official 46:bebbbd80dd87 52
mbed_official 46:bebbbd80dd87 53 if (mode == OpenDrain) {
mbed_official 46:bebbbd80dd87 54 *reg |= (1 << 10);
mbed_official 46:bebbbd80dd87 55 } else {
mbed_official 46:bebbbd80dd87 56 uint32_t tmp = *reg;
mbed_official 46:bebbbd80dd87 57 tmp &= ~(0x3 << 3);
mbed_official 46:bebbbd80dd87 58 tmp |= (mode & 0x3) << 3;
mbed_official 46:bebbbd80dd87 59 *reg = tmp;
mbed_official 46:bebbbd80dd87 60 }
mbed_official 46:bebbbd80dd87 61 }