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 "RawSerial.h"
mega64 0:38ccae254a29 17 #include "wait_api.h"
mega64 0:38ccae254a29 18 #include <cstdarg>
mega64 0:38ccae254a29 19
mega64 0:38ccae254a29 20 #if DEVICE_SERIAL
mega64 0:38ccae254a29 21
mega64 0:38ccae254a29 22 #define STRING_STACK_LIMIT 120
mega64 0:38ccae254a29 23
mega64 0:38ccae254a29 24 namespace mbed {
mega64 0:38ccae254a29 25
mega64 0:38ccae254a29 26 RawSerial::RawSerial(PinName tx, PinName rx) : SerialBase(tx, rx) {
mega64 0:38ccae254a29 27 }
mega64 0:38ccae254a29 28
mega64 0:38ccae254a29 29 int RawSerial::getc() {
mega64 0:38ccae254a29 30 return _base_getc();
mega64 0:38ccae254a29 31 }
mega64 0:38ccae254a29 32
mega64 0:38ccae254a29 33 int RawSerial::putc(int c) {
mega64 0:38ccae254a29 34 return _base_putc(c);
mega64 0:38ccae254a29 35 }
mega64 0:38ccae254a29 36
mega64 0:38ccae254a29 37 int RawSerial::puts(const char *str) {
mega64 0:38ccae254a29 38 while (*str)
mega64 0:38ccae254a29 39 putc(*str ++);
mega64 0:38ccae254a29 40 return 0;
mega64 0:38ccae254a29 41 }
mega64 0:38ccae254a29 42
mega64 0:38ccae254a29 43 // Experimental support for printf in RawSerial. No Stream inheritance
mega64 0:38ccae254a29 44 // means we can't call printf() directly, so we use sprintf() instead.
mega64 0:38ccae254a29 45 // We only call malloc() for the sprintf() buffer if the buffer
mega64 0:38ccae254a29 46 // length is above a certain threshold, otherwise we use just the stack.
mega64 0:38ccae254a29 47 int RawSerial::printf(const char *format, ...) {
mega64 0:38ccae254a29 48 std::va_list arg;
mega64 0:38ccae254a29 49 va_start(arg, format);
mega64 0:38ccae254a29 50 int len = vsnprintf(NULL, 0, format, arg);
mega64 0:38ccae254a29 51 if (len < STRING_STACK_LIMIT) {
mega64 0:38ccae254a29 52 char temp[STRING_STACK_LIMIT];
mega64 0:38ccae254a29 53 vsprintf(temp, format, arg);
mega64 0:38ccae254a29 54 puts(temp);
mega64 0:38ccae254a29 55 } else {
mega64 0:38ccae254a29 56 char *temp = new char[len + 1];
mega64 0:38ccae254a29 57 vsprintf(temp, format, arg);
mega64 0:38ccae254a29 58 puts(temp);
mega64 0:38ccae254a29 59 delete[] temp;
mega64 0:38ccae254a29 60 }
mega64 0:38ccae254a29 61 va_end(arg);
mega64 0:38ccae254a29 62 return len;
mega64 0:38ccae254a29 63 }
mega64 0:38ccae254a29 64
mega64 0:38ccae254a29 65 } // namespace mbed
mega64 0:38ccae254a29 66
mega64 0:38ccae254a29 67 #endif