...

Dependents:   2doejemplo Labo_TRSE_Drone

Fork of mbed by mbed official

Committer:
emilmont
Date:
Mon Feb 18 11:12:58 2013 +0000
Revision:
59:0883845fe643
Parent:
55:d722ed6a4237
Child:
65:5798e58a58b1
Add pinmap NC terminators for LPC1768 CAN.
Update the license from MIT to Apache v2.
Make the semihost code target independent using opportune defines for the UID and MAC.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 44:24d45a770a51 1 /* mbed Microcontroller Library
emilmont 54:71b101360fb9 2 * Copyright (c) 2006-2013 ARM Limited
emilmont 44:24d45a770a51 3 *
emilmont 59:0883845fe643 4 * Licensed under the Apache License, Version 2.0 (the "License");
emilmont 59:0883845fe643 5 * you may not use this file except in compliance with the License.
emilmont 59:0883845fe643 6 * You may obtain a copy of the License at
emilmont 59:0883845fe643 7 *
emilmont 59:0883845fe643 8 * http://www.apache.org/licenses/LICENSE-2.0
emilmont 44:24d45a770a51 9 *
emilmont 59:0883845fe643 10 * Unless required by applicable law or agreed to in writing, software
emilmont 59:0883845fe643 11 * distributed under the License is distributed on an "AS IS" BASIS,
emilmont 59:0883845fe643 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
emilmont 59:0883845fe643 13 * See the License for the specific language governing permissions and
emilmont 59:0883845fe643 14 * limitations under the License.
emilmont 44:24d45a770a51 15 */
emilmont 44:24d45a770a51 16 #ifndef MBED_DIGITALINOUT_H
emilmont 44:24d45a770a51 17 #define MBED_DIGITALINOUT_H
emilmont 44:24d45a770a51 18
emilmont 44:24d45a770a51 19 #include "platform.h"
emilmont 44:24d45a770a51 20
emilmont 44:24d45a770a51 21 #include "gpio_api.h"
emilmont 44:24d45a770a51 22
emilmont 44:24d45a770a51 23 namespace mbed {
emilmont 44:24d45a770a51 24
emilmont 44:24d45a770a51 25 /** A digital input/output, used for setting or reading a bi-directional pin
emilmont 44:24d45a770a51 26 */
emilmont 44:24d45a770a51 27 class DigitalInOut {
emilmont 44:24d45a770a51 28
emilmont 44:24d45a770a51 29 public:
emilmont 44:24d45a770a51 30 /** Create a DigitalInOut connected to the specified pin
emilmont 44:24d45a770a51 31 *
emilmont 44:24d45a770a51 32 * @param pin DigitalInOut pin to connect to
emilmont 44:24d45a770a51 33 */
emilmont 44:24d45a770a51 34 DigitalInOut(PinName pin) {
emilmont 44:24d45a770a51 35 gpio_init(&gpio, pin, PIN_INPUT);
emilmont 44:24d45a770a51 36 }
emilmont 55:d722ed6a4237 37
emilmont 44:24d45a770a51 38 /** Set the output, specified as 0 or 1 (int)
emilmont 44:24d45a770a51 39 *
emilmont 55:d722ed6a4237 40 * @param value An integer specifying the pin output value,
emilmont 55:d722ed6a4237 41 * 0 for logical 0, 1 (or any other non-zero value) for logical 1
emilmont 44:24d45a770a51 42 */
emilmont 44:24d45a770a51 43 void write(int value) {
emilmont 44:24d45a770a51 44 gpio_write(&gpio, value);
emilmont 44:24d45a770a51 45 }
emilmont 55:d722ed6a4237 46
emilmont 44:24d45a770a51 47 /** Return the output setting, represented as 0 or 1 (int)
emilmont 44:24d45a770a51 48 *
emilmont 44:24d45a770a51 49 * @returns
emilmont 55:d722ed6a4237 50 * an integer representing the output setting of the pin if it is an output,
emilmont 44:24d45a770a51 51 * or read the input if set as an input
emilmont 44:24d45a770a51 52 */
emilmont 44:24d45a770a51 53 int read() {
emilmont 44:24d45a770a51 54 return gpio_read(&gpio);
emilmont 44:24d45a770a51 55 }
emilmont 55:d722ed6a4237 56
emilmont 44:24d45a770a51 57 /** Set as an output
emilmont 44:24d45a770a51 58 */
emilmont 44:24d45a770a51 59 void output() {
emilmont 44:24d45a770a51 60 gpio_dir(&gpio, PIN_OUTPUT);
emilmont 44:24d45a770a51 61 }
emilmont 55:d722ed6a4237 62
emilmont 44:24d45a770a51 63 /** Set as an input
emilmont 44:24d45a770a51 64 */
emilmont 44:24d45a770a51 65 void input() {
emilmont 44:24d45a770a51 66 gpio_dir(&gpio, PIN_INPUT);
emilmont 44:24d45a770a51 67 }
emilmont 55:d722ed6a4237 68
emilmont 44:24d45a770a51 69 /** Set the input pin mode
emilmont 44:24d45a770a51 70 *
emilmont 44:24d45a770a51 71 * @param mode PullUp, PullDown, PullNone, OpenDrain
emilmont 44:24d45a770a51 72 */
emilmont 44:24d45a770a51 73 void mode(PinMode pull) {
emilmont 44:24d45a770a51 74 gpio_mode(&gpio, pull);
emilmont 44:24d45a770a51 75 }
emilmont 55:d722ed6a4237 76
emilmont 44:24d45a770a51 77 #ifdef MBED_OPERATORS
emilmont 44:24d45a770a51 78 /** A shorthand for write()
emilmont 44:24d45a770a51 79 */
emilmont 44:24d45a770a51 80 DigitalInOut& operator= (int value) {
emilmont 44:24d45a770a51 81 write(value);
emilmont 44:24d45a770a51 82 return *this;
emilmont 44:24d45a770a51 83 }
emilmont 55:d722ed6a4237 84
emilmont 44:24d45a770a51 85 DigitalInOut& operator= (DigitalInOut& rhs) {
emilmont 44:24d45a770a51 86 write(rhs.read());
emilmont 44:24d45a770a51 87 return *this;
emilmont 44:24d45a770a51 88 }
emilmont 55:d722ed6a4237 89
emilmont 44:24d45a770a51 90 /** A shorthand for read()
emilmont 44:24d45a770a51 91 */
emilmont 44:24d45a770a51 92 operator int() {
emilmont 44:24d45a770a51 93 return read();
emilmont 44:24d45a770a51 94 }
emilmont 44:24d45a770a51 95 #endif
emilmont 44:24d45a770a51 96
emilmont 44:24d45a770a51 97 protected:
emilmont 44:24d45a770a51 98 gpio_t gpio;
emilmont 44:24d45a770a51 99 };
emilmont 44:24d45a770a51 100
emilmont 44:24d45a770a51 101 } // namespace mbed
emilmont 44:24d45a770a51 102
emilmont 44:24d45a770a51 103 #endif