- fix F411 F334 systeminit when HSI used - portinout always read IDR regardless of port direction

Fork of mbed-src by mbed official

Committer:
Geremia
Date:
Sat Sep 27 11:16:28 2014 +0000
Revision:
332:e299ae530e63
Parent:
321:39f2bc1d0627
- fix F411 F334 systeminit when HSI used; - STMs PortInOut port.read() always read input data register (real external pin state) even if direction is output (same as other platforms)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 36:ab3ee77451e7 1 /* mbed Microcontroller Library
mbed_official 36:ab3ee77451e7 2 * Copyright (c) 2006-2013 ARM Limited
mbed_official 36:ab3ee77451e7 3 *
mbed_official 36:ab3ee77451e7 4 * Licensed under the Apache License, Version 2.0 (the "License");
mbed_official 36:ab3ee77451e7 5 * you may not use this file except in compliance with the License.
mbed_official 36:ab3ee77451e7 6 * You may obtain a copy of the License at
mbed_official 36:ab3ee77451e7 7 *
mbed_official 36:ab3ee77451e7 8 * http://www.apache.org/licenses/LICENSE-2.0
mbed_official 36:ab3ee77451e7 9 *
mbed_official 36:ab3ee77451e7 10 * Unless required by applicable law or agreed to in writing, software
mbed_official 36:ab3ee77451e7 11 * distributed under the License is distributed on an "AS IS" BASIS,
mbed_official 36:ab3ee77451e7 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mbed_official 36:ab3ee77451e7 13 * See the License for the specific language governing permissions and
mbed_official 36:ab3ee77451e7 14 * limitations under the License.
mbed_official 36:ab3ee77451e7 15 */
mbed_official 36:ab3ee77451e7 16 #include "RawSerial.h"
mbed_official 36:ab3ee77451e7 17 #include "wait_api.h"
mbed_official 64:7b352733b00a 18 #include <cstdarg>
mbed_official 36:ab3ee77451e7 19
mbed_official 36:ab3ee77451e7 20 #if DEVICE_SERIAL
mbed_official 36:ab3ee77451e7 21
mbed_official 64:7b352733b00a 22 #define STRING_STACK_LIMIT 120
mbed_official 64:7b352733b00a 23
mbed_official 36:ab3ee77451e7 24 namespace mbed {
mbed_official 36:ab3ee77451e7 25
mbed_official 36:ab3ee77451e7 26 RawSerial::RawSerial(PinName tx, PinName rx) : SerialBase(tx, rx) {
mbed_official 36:ab3ee77451e7 27 }
mbed_official 36:ab3ee77451e7 28
mbed_official 36:ab3ee77451e7 29 int RawSerial::getc() {
mbed_official 36:ab3ee77451e7 30 return _base_getc();
mbed_official 36:ab3ee77451e7 31 }
mbed_official 36:ab3ee77451e7 32
mbed_official 36:ab3ee77451e7 33 int RawSerial::putc(int c) {
mbed_official 36:ab3ee77451e7 34 return _base_putc(c);
mbed_official 36:ab3ee77451e7 35 }
mbed_official 36:ab3ee77451e7 36
mbed_official 64:7b352733b00a 37 int RawSerial::puts(const char *str) {
mbed_official 64:7b352733b00a 38 while (*str)
mbed_official 64:7b352733b00a 39 putc(*str ++);
mbed_official 64:7b352733b00a 40 return 0;
mbed_official 64:7b352733b00a 41 }
mbed_official 64:7b352733b00a 42
mbed_official 64:7b352733b00a 43 // Experimental support for printf in RawSerial. No Stream inheritance
mbed_official 64:7b352733b00a 44 // means we can't call printf() directly, so we use sprintf() instead.
mbed_official 64:7b352733b00a 45 // We only call malloc() for the sprintf() buffer if the buffer
mbed_official 64:7b352733b00a 46 // length is above a certain threshold, otherwise we use just the stack.
mbed_official 64:7b352733b00a 47 int RawSerial::printf(const char *format, ...) {
mbed_official 64:7b352733b00a 48 std::va_list arg;
mbed_official 64:7b352733b00a 49 va_start(arg, format);
mbed_official 64:7b352733b00a 50 int len = vsnprintf(NULL, 0, format, arg);
mbed_official 64:7b352733b00a 51 if (len < STRING_STACK_LIMIT) {
mbed_official 64:7b352733b00a 52 char temp[STRING_STACK_LIMIT];
mbed_official 64:7b352733b00a 53 vsprintf(temp, format, arg);
mbed_official 64:7b352733b00a 54 puts(temp);
mbed_official 64:7b352733b00a 55 } else {
mbed_official 64:7b352733b00a 56 char *temp = new char[len + 1];
mbed_official 64:7b352733b00a 57 vsprintf(temp, format, arg);
mbed_official 64:7b352733b00a 58 puts(temp);
mbed_official 64:7b352733b00a 59 delete[] temp;
mbed_official 64:7b352733b00a 60 }
mbed_official 64:7b352733b00a 61 va_end(arg);
mbed_official 64:7b352733b00a 62 return len;
mbed_official 64:7b352733b00a 63 }
mbed_official 64:7b352733b00a 64
mbed_official 36:ab3ee77451e7 65 } // namespace mbed
mbed_official 36:ab3ee77451e7 66
mbed_official 36:ab3ee77451e7 67 #endif