Realtime spectrogram for DISCO-F746NG. On-board MEMS microphone is used for input sound signal. リアルタイムスペクトログラム.入力:MEMSマイク

Dependencies:   F746_GUI F746_SAI_IO UIT_FFT_Real

Committer:
MikamiUitOpen
Date:
Sun Oct 02 10:51:10 2016 +0000
Revision:
4:c1beacfc42c7
5

Who changed what in which revision?

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