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:
Mon Apr 10 13:43:07 2017 +0000
Revision:
6:b3885567877c
Parent:
4:c1beacfc42c7
7

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 "BusIn.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 BusIn::BusIn(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 DigitalIn(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 BusIn::BusIn(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 DigitalIn(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 BusIn::~BusIn() {
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 int BusIn::read() {
MikamiUitOpen 4:c1beacfc42c7 52 int v = 0;
MikamiUitOpen 4:c1beacfc42c7 53 for (int i=0; i<16; i++) {
MikamiUitOpen 4:c1beacfc42c7 54 if (_pin[i] != 0) {
MikamiUitOpen 4:c1beacfc42c7 55 v |= _pin[i]->read() << i;
MikamiUitOpen 4:c1beacfc42c7 56 }
MikamiUitOpen 4:c1beacfc42c7 57 }
MikamiUitOpen 4:c1beacfc42c7 58 return v;
MikamiUitOpen 4:c1beacfc42c7 59 }
MikamiUitOpen 4:c1beacfc42c7 60
MikamiUitOpen 4:c1beacfc42c7 61 void BusIn::mode(PinMode pull) {
MikamiUitOpen 4:c1beacfc42c7 62 for (int i=0; i<16; i++) {
MikamiUitOpen 4:c1beacfc42c7 63 if (_pin[i] != 0) {
MikamiUitOpen 4:c1beacfc42c7 64 _pin[i]->mode(pull);
MikamiUitOpen 4:c1beacfc42c7 65 }
MikamiUitOpen 4:c1beacfc42c7 66 }
MikamiUitOpen 4:c1beacfc42c7 67 }
MikamiUitOpen 4:c1beacfc42c7 68
MikamiUitOpen 4:c1beacfc42c7 69 #ifdef MBED_OPERATORS
MikamiUitOpen 4:c1beacfc42c7 70 BusIn::operator int() {
MikamiUitOpen 4:c1beacfc42c7 71 return read();
MikamiUitOpen 4:c1beacfc42c7 72 }
MikamiUitOpen 4:c1beacfc42c7 73
MikamiUitOpen 4:c1beacfc42c7 74 DigitalIn& BusIn::operator[] (int index) {
MikamiUitOpen 4:c1beacfc42c7 75 MBED_ASSERT(index >= 0 && index <= 16);
MikamiUitOpen 4:c1beacfc42c7 76 MBED_ASSERT(_pin[index]);
MikamiUitOpen 4:c1beacfc42c7 77 return *_pin[index];
MikamiUitOpen 4:c1beacfc42c7 78 }
MikamiUitOpen 4:c1beacfc42c7 79
MikamiUitOpen 4:c1beacfc42c7 80 #endif
MikamiUitOpen 4:c1beacfc42c7 81
MikamiUitOpen 4:c1beacfc42c7 82 } // namespace mbed