Modification of mbed-src library only for STM32F030F4, very cheap microcontroller in 20-Pin TSSOP package, with 16Kbytes of Flash and 4Kbytes of Ram. **Target for online compilator must be Nucleo 32F030R8.** 01.02.2018 Acosinwork: Fork of mbed-STM32F030F4 library. Support for Troyka GPIO expander by Amperka. http://amperka.ru/product/troyka-gpio-expander

Fork of mbed-STM32F030F4 by Nothing Special

Committer:
acosinwork
Date:
Thu Feb 01 10:37:10 2018 +0000
Revision:
12:6f07dd7cbe47
Parent:
0:38ccae254a29
Change pin mapping and set internall oscillator as default. Fork to support Troyka GPIO expander (I2C I/O); http://amperka.ru/product/troyka-gpio-expander

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 #include "BusIn.h"
mega64 0:38ccae254a29 17
mega64 0:38ccae254a29 18 namespace mbed {
mega64 0:38ccae254a29 19
mega64 0:38ccae254a29 20 BusIn::BusIn(PinName p0, PinName p1, PinName p2, PinName p3, PinName p4, PinName p5, PinName p6, PinName p7, PinName p8, PinName p9, PinName p10, PinName p11, PinName p12, PinName p13, PinName p14, PinName p15) {
mega64 0:38ccae254a29 21 PinName pins[16] = {p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15};
mega64 0:38ccae254a29 22
mega64 0:38ccae254a29 23 for (int i=0; i<16; i++) {
mega64 0:38ccae254a29 24 _pin[i] = (pins[i] != NC) ? new DigitalIn(pins[i]) : 0;
mega64 0:38ccae254a29 25 }
mega64 0:38ccae254a29 26 }
mega64 0:38ccae254a29 27
mega64 0:38ccae254a29 28 BusIn::BusIn(PinName pins[16]) {
mega64 0:38ccae254a29 29 for (int i=0; i<16; i++) {
mega64 0:38ccae254a29 30 _pin[i] = (pins[i] != NC) ? new DigitalIn(pins[i]) : 0;
mega64 0:38ccae254a29 31 }
mega64 0:38ccae254a29 32 }
mega64 0:38ccae254a29 33
mega64 0:38ccae254a29 34 BusIn::~BusIn() {
mega64 0:38ccae254a29 35 for (int i=0; i<16; i++) {
mega64 0:38ccae254a29 36 if (_pin[i] != 0) {
mega64 0:38ccae254a29 37 delete _pin[i];
mega64 0:38ccae254a29 38 }
mega64 0:38ccae254a29 39 }
mega64 0:38ccae254a29 40 }
mega64 0:38ccae254a29 41
mega64 0:38ccae254a29 42 int BusIn::read() {
mega64 0:38ccae254a29 43 int v = 0;
mega64 0:38ccae254a29 44 for (int i=0; i<16; i++) {
mega64 0:38ccae254a29 45 if (_pin[i] != 0) {
mega64 0:38ccae254a29 46 v |= _pin[i]->read() << i;
mega64 0:38ccae254a29 47 }
mega64 0:38ccae254a29 48 }
mega64 0:38ccae254a29 49 return v;
mega64 0:38ccae254a29 50 }
mega64 0:38ccae254a29 51
mega64 0:38ccae254a29 52 void BusIn::mode(PinMode pull) {
mega64 0:38ccae254a29 53 for (int i=0; i<16; i++) {
mega64 0:38ccae254a29 54 if (_pin[i] != 0) {
mega64 0:38ccae254a29 55 _pin[i]->mode(pull);
mega64 0:38ccae254a29 56 }
mega64 0:38ccae254a29 57 }
mega64 0:38ccae254a29 58 }
mega64 0:38ccae254a29 59
mega64 0:38ccae254a29 60 #ifdef MBED_OPERATORS
mega64 0:38ccae254a29 61 BusIn::operator int() {
mega64 0:38ccae254a29 62 return read();
mega64 0:38ccae254a29 63 }
mega64 0:38ccae254a29 64 #endif
mega64 0:38ccae254a29 65
mega64 0:38ccae254a29 66 } // namespace mbed