mbed library sources with internal temperature sensor for nucleo f401

Committer:
elessair
Date:
Sat Jan 17 18:03:58 2015 +0000
Revision:
0:7e2bd16f80af
nucleo f401re internal temperature added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elessair 0:7e2bd16f80af 1 /* mbed Microcontroller Library
elessair 0:7e2bd16f80af 2 * Copyright (c) 2006-2013 ARM Limited
elessair 0:7e2bd16f80af 3 *
elessair 0:7e2bd16f80af 4 * Licensed under the Apache License, Version 2.0 (the "License");
elessair 0:7e2bd16f80af 5 * you may not use this file except in compliance with the License.
elessair 0:7e2bd16f80af 6 * You may obtain a copy of the License at
elessair 0:7e2bd16f80af 7 *
elessair 0:7e2bd16f80af 8 * http://www.apache.org/licenses/LICENSE-2.0
elessair 0:7e2bd16f80af 9 *
elessair 0:7e2bd16f80af 10 * Unless required by applicable law or agreed to in writing, software
elessair 0:7e2bd16f80af 11 * distributed under the License is distributed on an "AS IS" BASIS,
elessair 0:7e2bd16f80af 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
elessair 0:7e2bd16f80af 13 * See the License for the specific language governing permissions and
elessair 0:7e2bd16f80af 14 * limitations under the License.
elessair 0:7e2bd16f80af 15 */
elessair 0:7e2bd16f80af 16 #include "BusInOut.h"
elessair 0:7e2bd16f80af 17
elessair 0:7e2bd16f80af 18 namespace mbed {
elessair 0:7e2bd16f80af 19
elessair 0:7e2bd16f80af 20 BusInOut::BusInOut(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) {
elessair 0:7e2bd16f80af 21 PinName pins[16] = {p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15};
elessair 0:7e2bd16f80af 22
elessair 0:7e2bd16f80af 23 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 24 _pin[i] = (pins[i] != NC) ? new DigitalInOut(pins[i]) : 0;
elessair 0:7e2bd16f80af 25 }
elessair 0:7e2bd16f80af 26 }
elessair 0:7e2bd16f80af 27
elessair 0:7e2bd16f80af 28 BusInOut::BusInOut(PinName pins[16]) {
elessair 0:7e2bd16f80af 29 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 30 _pin[i] = (pins[i] != NC) ? new DigitalInOut(pins[i]) : 0;
elessair 0:7e2bd16f80af 31 }
elessair 0:7e2bd16f80af 32 }
elessair 0:7e2bd16f80af 33
elessair 0:7e2bd16f80af 34 BusInOut::~BusInOut() {
elessair 0:7e2bd16f80af 35 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 36 if (_pin[i] != 0) {
elessair 0:7e2bd16f80af 37 delete _pin[i];
elessair 0:7e2bd16f80af 38 }
elessair 0:7e2bd16f80af 39 }
elessair 0:7e2bd16f80af 40 }
elessair 0:7e2bd16f80af 41
elessair 0:7e2bd16f80af 42 void BusInOut::write(int value) {
elessair 0:7e2bd16f80af 43 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 44 if (_pin[i] != 0) {
elessair 0:7e2bd16f80af 45 _pin[i]->write((value >> i) & 1);
elessair 0:7e2bd16f80af 46 }
elessair 0:7e2bd16f80af 47 }
elessair 0:7e2bd16f80af 48 }
elessair 0:7e2bd16f80af 49
elessair 0:7e2bd16f80af 50 int BusInOut::read() {
elessair 0:7e2bd16f80af 51 int v = 0;
elessair 0:7e2bd16f80af 52 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 53 if (_pin[i] != 0) {
elessair 0:7e2bd16f80af 54 v |= _pin[i]->read() << i;
elessair 0:7e2bd16f80af 55 }
elessair 0:7e2bd16f80af 56 }
elessair 0:7e2bd16f80af 57 return v;
elessair 0:7e2bd16f80af 58 }
elessair 0:7e2bd16f80af 59
elessair 0:7e2bd16f80af 60 void BusInOut::output() {
elessair 0:7e2bd16f80af 61 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 62 if (_pin[i] != 0) {
elessair 0:7e2bd16f80af 63 _pin[i]->output();
elessair 0:7e2bd16f80af 64 }
elessair 0:7e2bd16f80af 65 }
elessair 0:7e2bd16f80af 66 }
elessair 0:7e2bd16f80af 67
elessair 0:7e2bd16f80af 68 void BusInOut::input() {
elessair 0:7e2bd16f80af 69 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 70 if (_pin[i] != 0) {
elessair 0:7e2bd16f80af 71 _pin[i]->input();
elessair 0:7e2bd16f80af 72 }
elessair 0:7e2bd16f80af 73 }
elessair 0:7e2bd16f80af 74 }
elessair 0:7e2bd16f80af 75
elessair 0:7e2bd16f80af 76 void BusInOut::mode(PinMode pull) {
elessair 0:7e2bd16f80af 77 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 78 if (_pin[i] != 0) {
elessair 0:7e2bd16f80af 79 _pin[i]->mode(pull);
elessair 0:7e2bd16f80af 80 }
elessair 0:7e2bd16f80af 81 }
elessair 0:7e2bd16f80af 82 }
elessair 0:7e2bd16f80af 83
elessair 0:7e2bd16f80af 84 #ifdef MBED_OPERATORS
elessair 0:7e2bd16f80af 85 BusInOut& BusInOut::operator= (int v) {
elessair 0:7e2bd16f80af 86 write(v);
elessair 0:7e2bd16f80af 87 return *this;
elessair 0:7e2bd16f80af 88 }
elessair 0:7e2bd16f80af 89
elessair 0:7e2bd16f80af 90 BusInOut& BusInOut::operator= (BusInOut& rhs) {
elessair 0:7e2bd16f80af 91 write(rhs.read());
elessair 0:7e2bd16f80af 92 return *this;
elessair 0:7e2bd16f80af 93 }
elessair 0:7e2bd16f80af 94
elessair 0:7e2bd16f80af 95 BusInOut::operator int() {
elessair 0:7e2bd16f80af 96 return read();
elessair 0:7e2bd16f80af 97 }
elessair 0:7e2bd16f80af 98 #endif
elessair 0:7e2bd16f80af 99
elessair 0:7e2bd16f80af 100 } // namespace mbed