dev01 Brautlecht / mbed-STM32F030F4

Dependents:   STM32F031_Blink_Aug17

Fork of mbed-STM32F030F4 by Nothing Special

Committer:
mega64
Date:
Sat Oct 18 02:40:17 2014 +0000
Revision:
0:38ccae254a29
only for STM32F030F4

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mega64 0:38ccae254a29 1 /* mbed Microcontroller Library
mega64 0:38ccae254a29 2 * Copyright (c) 2006-2013 ARM Limited
mega64 0:38ccae254a29 3 *
mega64 0:38ccae254a29 4 * Licensed under the Apache License, Version 2.0 (the "License");
mega64 0:38ccae254a29 5 * you may not use this file except in compliance with the License.
mega64 0:38ccae254a29 6 * You may obtain a copy of the License at
mega64 0:38ccae254a29 7 *
mega64 0:38ccae254a29 8 * http://www.apache.org/licenses/LICENSE-2.0
mega64 0:38ccae254a29 9 *
mega64 0:38ccae254a29 10 * Unless required by applicable law or agreed to in writing, software
mega64 0:38ccae254a29 11 * distributed under the License is distributed on an "AS IS" BASIS,
mega64 0:38ccae254a29 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mega64 0:38ccae254a29 13 * See the License for the specific language governing permissions and
mega64 0:38ccae254a29 14 * limitations under the License.
mega64 0:38ccae254a29 15 */
mega64 0:38ccae254a29 16 #ifndef MBED_BUSOUT_H
mega64 0:38ccae254a29 17 #define MBED_BUSOUT_H
mega64 0:38ccae254a29 18
mega64 0:38ccae254a29 19 #include "DigitalOut.h"
mega64 0:38ccae254a29 20
mega64 0:38ccae254a29 21 namespace mbed {
mega64 0:38ccae254a29 22
mega64 0:38ccae254a29 23 /** A digital output bus, used for setting the state of a collection of pins
mega64 0:38ccae254a29 24 */
mega64 0:38ccae254a29 25 class BusOut {
mega64 0:38ccae254a29 26
mega64 0:38ccae254a29 27 public:
mega64 0:38ccae254a29 28
mega64 0:38ccae254a29 29 /** Create an BusOut, connected to the specified pins
mega64 0:38ccae254a29 30 *
mega64 0:38ccae254a29 31 * @param p<n> DigitalOut pin to connect to bus bit <n> (p5-p30, NC)
mega64 0:38ccae254a29 32 *
mega64 0:38ccae254a29 33 * @note
mega64 0:38ccae254a29 34 * It is only required to specify as many pin variables as is required
mega64 0:38ccae254a29 35 * for the bus; the rest will default to NC (not connected)
mega64 0:38ccae254a29 36 */
mega64 0:38ccae254a29 37 BusOut(PinName p0, PinName p1 = NC, PinName p2 = NC, PinName p3 = NC,
mega64 0:38ccae254a29 38 PinName p4 = NC, PinName p5 = NC, PinName p6 = NC, PinName p7 = NC,
mega64 0:38ccae254a29 39 PinName p8 = NC, PinName p9 = NC, PinName p10 = NC, PinName p11 = NC,
mega64 0:38ccae254a29 40 PinName p12 = NC, PinName p13 = NC, PinName p14 = NC, PinName p15 = NC);
mega64 0:38ccae254a29 41
mega64 0:38ccae254a29 42 BusOut(PinName pins[16]);
mega64 0:38ccae254a29 43
mega64 0:38ccae254a29 44 virtual ~BusOut();
mega64 0:38ccae254a29 45
mega64 0:38ccae254a29 46 /** Write the value to the output bus
mega64 0:38ccae254a29 47 *
mega64 0:38ccae254a29 48 * @param value An integer specifying a bit to write for every corresponding DigitalOut pin
mega64 0:38ccae254a29 49 */
mega64 0:38ccae254a29 50 void write(int value);
mega64 0:38ccae254a29 51
mega64 0:38ccae254a29 52 /** Read the value currently output on the bus
mega64 0:38ccae254a29 53 *
mega64 0:38ccae254a29 54 * @returns
mega64 0:38ccae254a29 55 * An integer with each bit corresponding to associated DigitalOut pin setting
mega64 0:38ccae254a29 56 */
mega64 0:38ccae254a29 57 int read();
mega64 0:38ccae254a29 58
mega64 0:38ccae254a29 59 #ifdef MBED_OPERATORS
mega64 0:38ccae254a29 60 /** A shorthand for write()
mega64 0:38ccae254a29 61 */
mega64 0:38ccae254a29 62 BusOut& operator= (int v);
mega64 0:38ccae254a29 63 BusOut& operator= (BusOut& rhs);
mega64 0:38ccae254a29 64
mega64 0:38ccae254a29 65 /** A shorthand for read()
mega64 0:38ccae254a29 66 */
mega64 0:38ccae254a29 67 operator int();
mega64 0:38ccae254a29 68 #endif
mega64 0:38ccae254a29 69
mega64 0:38ccae254a29 70 protected:
mega64 0:38ccae254a29 71 DigitalOut* _pin[16];
mega64 0:38ccae254a29 72
mega64 0:38ccae254a29 73 /* disallow copy constructor and assignment operators */
mega64 0:38ccae254a29 74 private:
mega64 0:38ccae254a29 75 BusOut(const BusOut&);
mega64 0:38ccae254a29 76 BusOut & operator = (const BusOut&);
mega64 0:38ccae254a29 77 };
mega64 0:38ccae254a29 78
mega64 0:38ccae254a29 79 } // namespace mbed
mega64 0:38ccae254a29 80
mega64 0:38ccae254a29 81 #endif