mbed official / mbed-src

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Committer:
mbed_official
Date:
Wed Jun 11 16:00:09 2014 +0100
Revision:
227:7bd0639b8911
Parent:
30:91c1d09ada54
Child:
250:a49055e7a707
Synchronized with git revision d58d532ebc0e0a96f4fffb8edefc082b71b964af

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 30:91c1d09ada54 1 /* mbed Microcontroller Library
mbed_official 30:91c1d09ada54 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 30:91c1d09ada54 3 *
mbed_official 30:91c1d09ada54 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 30:91c1d09ada54 5 * you may not use this file except in compliance with the License.
mbed_official 30:91c1d09ada54 6 * You may obtain a copy of the License at
mbed_official 30:91c1d09ada54 7 *
mbed_official 30:91c1d09ada54 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 30:91c1d09ada54 9 *
mbed_official 30:91c1d09ada54 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 30:91c1d09ada54 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 30:91c1d09ada54 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 30:91c1d09ada54 13 * See the License for the specific language governing permissions and
mbed_official 30:91c1d09ada54 14 * limitations under the License.
mbed_official 30:91c1d09ada54 15 */
mbed_official 227:7bd0639b8911 16 #include "mbed_assert.h"
mbed_official 30:91c1d09ada54 17 #include "pinmap.h"
mbed_official 30:91c1d09ada54 18 #include "error.h"
mbed_official 30:91c1d09ada54 19
mbed_official 30:91c1d09ada54 20 void pin_function(PinName pin, int function) {
mbed_official 227:7bd0639b8911 21 MBED_ASSERT(pin != (PinName)NC);
mbed_official 30:91c1d09ada54 22 uint32_t offset = (uint32_t)pin & 0xff;
mbed_official 30:91c1d09ada54 23 __IO uint32_t *reg = (__IO uint32_t*)(LPC_IOCON_BASE + offset);
mbed_official 30:91c1d09ada54 24
mbed_official 30:91c1d09ada54 25 // pin function bits: [2:0] -> 111 = (0x7)
mbed_official 30:91c1d09ada54 26 *reg = (*reg & ~0x7) | (function & 0x7);
mbed_official 30:91c1d09ada54 27 }
mbed_official 30:91c1d09ada54 28
mbed_official 30:91c1d09ada54 29 void pin_mode(PinName pin, PinMode mode) {
mbed_official 227:7bd0639b8911 30 MBED_ASSERT(pin != (PinName)NC);
mbed_official 30:91c1d09ada54 31 uint32_t offset = (uint32_t)pin & 0xff;
mbed_official 227:7bd0639b8911 32 uint32_t drain = ((uint32_t)mode & (uint32_t)OpenDrain) >> 2;
mbed_official 30:91c1d09ada54 33
mbed_official 30:91c1d09ada54 34 __IO uint32_t *reg = (__IO uint32_t*)(LPC_IOCON_BASE + offset);
mbed_official 30:91c1d09ada54 35 uint32_t tmp = *reg;
mbed_official 30:91c1d09ada54 36
mbed_official 30:91c1d09ada54 37 // pin mode bits: [4:3] -> 11000 = (0x3 << 3)
mbed_official 30:91c1d09ada54 38 tmp &= ~(0x3 << 3);
mbed_official 30:91c1d09ada54 39 tmp |= (mode & 0x3) << 3;
mbed_official 30:91c1d09ada54 40
mbed_official 30:91c1d09ada54 41 // drain
mbed_official 30:91c1d09ada54 42 tmp &= ~(0x1 << 10);
mbed_official 30:91c1d09ada54 43 tmp |= drain << 10;
mbed_official 30:91c1d09ada54 44
mbed_official 30:91c1d09ada54 45 *reg = tmp;
mbed_official 30:91c1d09ada54 46 }