Demo program for library named SD_PlayerSkeleton of SD card player skeleton. SD カードプレーヤのための骨組みとして使うためのライブラリ SD_PlayerSkeleton の使用例.このプログラムについては,CQ出版社インターフェース誌 2018年7月号で解説している.

Dependencies:   F746_GUI F746_SAI_IO SD_PlayerSkeleton

Committer:
MikamiUitOpen
Date:
Sun Oct 02 03:29:34 2016 +0000
Revision:
2:cf42e62a97dc
3

Who changed what in which revision?

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