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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
Kojto
Date:
Wed Jul 19 16:46:19 2017 +0100
Revision:
147:a97add6d7e64
Parent:
145:64910690c574
Release 147 of the mbed library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 128:9bcdf88f62b0 1 /* mbed Microcontroller Library
<> 128:9bcdf88f62b0 2 * Copyright (c) 2006-2013 ARM Limited
<> 128:9bcdf88f62b0 3 *
<> 128:9bcdf88f62b0 4 * Licensed under the Apache License, Version 2.0 (the "License");
<> 128:9bcdf88f62b0 5 * you may not use this file except in compliance with the License.
<> 128:9bcdf88f62b0 6 * You may obtain a copy of the License at
<> 128:9bcdf88f62b0 7 *
<> 128:9bcdf88f62b0 8 * http://www.apache.org/licenses/LICENSE-2.0
<> 128:9bcdf88f62b0 9 *
<> 128:9bcdf88f62b0 10 * Unless required by applicable law or agreed to in writing, software
<> 128:9bcdf88f62b0 11 * distributed under the License is distributed on an "AS IS" BASIS,
<> 128:9bcdf88f62b0 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
<> 128:9bcdf88f62b0 13 * See the License for the specific language governing permissions and
<> 128:9bcdf88f62b0 14 * limitations under the License.
<> 128:9bcdf88f62b0 15 */
<> 128:9bcdf88f62b0 16 #ifndef MBED_PORTIN_H
<> 128:9bcdf88f62b0 17 #define MBED_PORTIN_H
<> 128:9bcdf88f62b0 18
<> 128:9bcdf88f62b0 19 #include "platform/platform.h"
<> 128:9bcdf88f62b0 20
AnnaBridge 145:64910690c574 21 #if defined (DEVICE_PORTIN) || defined(DOXYGEN_ONLY)
<> 128:9bcdf88f62b0 22
<> 128:9bcdf88f62b0 23 #include "hal/port_api.h"
<> 138:093f2bd7b9eb 24 #include "platform/mbed_critical.h"
<> 128:9bcdf88f62b0 25
<> 128:9bcdf88f62b0 26 namespace mbed {
<> 128:9bcdf88f62b0 27 /** \addtogroup drivers */
<> 128:9bcdf88f62b0 28
<> 128:9bcdf88f62b0 29 /** A multiple pin digital input
<> 128:9bcdf88f62b0 30 *
AnnaBridge 145:64910690c574 31 * @note Synchronization level: Interrupt safe
<> 128:9bcdf88f62b0 32 *
<> 128:9bcdf88f62b0 33 * Example:
<> 128:9bcdf88f62b0 34 * @code
<> 128:9bcdf88f62b0 35 * // Switch on an LED if any of mbed pins 21-26 is high
<> 128:9bcdf88f62b0 36 *
<> 128:9bcdf88f62b0 37 * #include "mbed.h"
<> 128:9bcdf88f62b0 38 *
<> 128:9bcdf88f62b0 39 * PortIn p(Port2, 0x0000003F); // p21-p26
<> 128:9bcdf88f62b0 40 * DigitalOut ind(LED4);
<> 128:9bcdf88f62b0 41 *
<> 128:9bcdf88f62b0 42 * int main() {
<> 128:9bcdf88f62b0 43 * while(1) {
<> 128:9bcdf88f62b0 44 * int pins = p.read();
<> 128:9bcdf88f62b0 45 * if(pins) {
<> 128:9bcdf88f62b0 46 * ind = 1;
<> 128:9bcdf88f62b0 47 * } else {
<> 128:9bcdf88f62b0 48 * ind = 0;
<> 128:9bcdf88f62b0 49 * }
<> 128:9bcdf88f62b0 50 * }
<> 128:9bcdf88f62b0 51 * }
<> 128:9bcdf88f62b0 52 * @endcode
AnnaBridge 145:64910690c574 53 * @ingroup drivers
<> 128:9bcdf88f62b0 54 */
<> 128:9bcdf88f62b0 55 class PortIn {
<> 128:9bcdf88f62b0 56 public:
<> 128:9bcdf88f62b0 57
<> 128:9bcdf88f62b0 58 /** Create an PortIn, connected to the specified port
<> 128:9bcdf88f62b0 59 *
<> 128:9bcdf88f62b0 60 * @param port Port to connect to (Port0-Port5)
<> 128:9bcdf88f62b0 61 * @param mask A bitmask to identify which bits in the port should be included (0 - ignore)
<> 128:9bcdf88f62b0 62 */
<> 128:9bcdf88f62b0 63 PortIn(PortName port, int mask = 0xFFFFFFFF) {
<> 128:9bcdf88f62b0 64 core_util_critical_section_enter();
<> 128:9bcdf88f62b0 65 port_init(&_port, port, mask, PIN_INPUT);
<> 128:9bcdf88f62b0 66 core_util_critical_section_exit();
<> 128:9bcdf88f62b0 67 }
<> 128:9bcdf88f62b0 68
<> 128:9bcdf88f62b0 69 /** Read the value currently output on the port
<> 128:9bcdf88f62b0 70 *
<> 128:9bcdf88f62b0 71 * @returns
<> 128:9bcdf88f62b0 72 * An integer with each bit corresponding to associated port pin setting
<> 128:9bcdf88f62b0 73 */
<> 128:9bcdf88f62b0 74 int read() {
<> 128:9bcdf88f62b0 75 return port_read(&_port);
<> 128:9bcdf88f62b0 76 }
<> 128:9bcdf88f62b0 77
<> 128:9bcdf88f62b0 78 /** Set the input pin mode
<> 128:9bcdf88f62b0 79 *
<> 128:9bcdf88f62b0 80 * @param mode PullUp, PullDown, PullNone, OpenDrain
<> 128:9bcdf88f62b0 81 */
<> 128:9bcdf88f62b0 82 void mode(PinMode mode) {
<> 128:9bcdf88f62b0 83 core_util_critical_section_enter();
<> 128:9bcdf88f62b0 84 port_mode(&_port, mode);
<> 128:9bcdf88f62b0 85 core_util_critical_section_exit();
<> 128:9bcdf88f62b0 86 }
<> 128:9bcdf88f62b0 87
<> 128:9bcdf88f62b0 88 /** A shorthand for read()
<> 128:9bcdf88f62b0 89 */
<> 128:9bcdf88f62b0 90 operator int() {
<> 128:9bcdf88f62b0 91 return read();
<> 128:9bcdf88f62b0 92 }
<> 128:9bcdf88f62b0 93
<> 128:9bcdf88f62b0 94 private:
<> 128:9bcdf88f62b0 95 port_t _port;
<> 128:9bcdf88f62b0 96 };
<> 128:9bcdf88f62b0 97
<> 128:9bcdf88f62b0 98 } // namespace mbed
<> 128:9bcdf88f62b0 99
<> 128:9bcdf88f62b0 100 #endif
<> 128:9bcdf88f62b0 101
<> 128:9bcdf88f62b0 102 #endif