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 "BusOut.h"
elessair 0:7e2bd16f80af 17
elessair 0:7e2bd16f80af 18 namespace mbed {
elessair 0:7e2bd16f80af 19
elessair 0:7e2bd16f80af 20 BusOut::BusOut(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 DigitalOut(pins[i]) : 0;
elessair 0:7e2bd16f80af 25 }
elessair 0:7e2bd16f80af 26 }
elessair 0:7e2bd16f80af 27
elessair 0:7e2bd16f80af 28 BusOut::BusOut(PinName pins[16]) {
elessair 0:7e2bd16f80af 29 for (int i=0; i<16; i++) {
elessair 0:7e2bd16f80af 30 _pin[i] = (pins[i] != NC) ? new DigitalOut(pins[i]) : 0;
elessair 0:7e2bd16f80af 31 }
elessair 0:7e2bd16f80af 32 }
elessair 0:7e2bd16f80af 33
elessair 0:7e2bd16f80af 34 BusOut::~BusOut() {
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 BusOut::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 BusOut::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 #ifdef MBED_OPERATORS
elessair 0:7e2bd16f80af 61 BusOut& BusOut::operator= (int v) {
elessair 0:7e2bd16f80af 62 write(v);
elessair 0:7e2bd16f80af 63 return *this;
elessair 0:7e2bd16f80af 64 }
elessair 0:7e2bd16f80af 65
elessair 0:7e2bd16f80af 66 BusOut& BusOut::operator= (BusOut& rhs) {
elessair 0:7e2bd16f80af 67 write(rhs.read());
elessair 0:7e2bd16f80af 68 return *this;
elessair 0:7e2bd16f80af 69 }
elessair 0:7e2bd16f80af 70
elessair 0:7e2bd16f80af 71 BusOut::operator int() {
elessair 0:7e2bd16f80af 72 return read();
elessair 0:7e2bd16f80af 73 }
elessair 0:7e2bd16f80af 74 #endif
elessair 0:7e2bd16f80af 75
elessair 0:7e2bd16f80af 76 } // namespace mbed