オシロスコープ. このプログラムの説明は,CQ出版社「トランジスタ技術」の2021年10月号から開始された連載記事「STM32マイコンではじめるPC計測」の中にあります.このプログラムといっしょに使うPC側のプログラムについても同誌を参照してください.

Dependencies:   Array_Matrix mbed SerialTxRxIntr DSP_ADDA_Dual

Committer:
MikamiUitOpen
Date:
Thu Sep 09 08:47:03 2021 +0000
Revision:
0:4440ad009afe
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:4440ad009afe 1 //--------------------------------------------------------
MikamiUitOpen 0:4440ad009afe 2 // バッファの template クラス
MikamiUitOpen 0:4440ad009afe 3 //
MikamiUitOpen 0:4440ad009afe 4 // 2021/07/19, Copyright (c) 2021 MIKAMI, Naoki
MikamiUitOpen 0:4440ad009afe 5 //-------------------------------------------------------
MikamiUitOpen 0:4440ad009afe 6
MikamiUitOpen 0:4440ad009afe 7 #ifndef INPUT_BUFFER_HPP
MikamiUitOpen 0:4440ad009afe 8 #define INPUT_BUFFER_HPP
MikamiUitOpen 0:4440ad009afe 9
MikamiUitOpen 0:4440ad009afe 10 #include "Array.hpp"
MikamiUitOpen 0:4440ad009afe 11 using namespace Mikami;
MikamiUitOpen 0:4440ad009afe 12
MikamiUitOpen 0:4440ad009afe 13 class InputBuffer
MikamiUitOpen 0:4440ad009afe 14 {
MikamiUitOpen 0:4440ad009afe 15 public:
MikamiUitOpen 0:4440ad009afe 16 // コンストラクタ
MikamiUitOpen 0:4440ad009afe 17 explicit InputBuffer(int size, float initValue = 0)
MikamiUitOpen 0:4440ad009afe 18 : N_(size), buf_(2*size, initValue), index_(0), full_(false) {}
MikamiUitOpen 0:4440ad009afe 19
MikamiUitOpen 0:4440ad009afe 20 // データを格納
MikamiUitOpen 0:4440ad009afe 21 void Store(float data1, float data2)
MikamiUitOpen 0:4440ad009afe 22 {
MikamiUitOpen 0:4440ad009afe 23 buf_[index_] = data1;
MikamiUitOpen 0:4440ad009afe 24 buf_[N_+index_++] = data2;
MikamiUitOpen 0:4440ad009afe 25 }
MikamiUitOpen 0:4440ad009afe 26
MikamiUitOpen 0:4440ad009afe 27 // バッファからデータの取り出し
MikamiUitOpen 0:4440ad009afe 28 Array<float> Get() const { return buf_; }
MikamiUitOpen 0:4440ad009afe 29
MikamiUitOpen 0:4440ad009afe 30 // バッファが満杯で次の準備を行う
MikamiUitOpen 0:4440ad009afe 31 bool IsFullNext()
MikamiUitOpen 0:4440ad009afe 32 {
MikamiUitOpen 0:4440ad009afe 33 if (index_ < N_) return false;
MikamiUitOpen 0:4440ad009afe 34
MikamiUitOpen 0:4440ad009afe 35 index_ = 0;
MikamiUitOpen 0:4440ad009afe 36 full_ = true;
MikamiUitOpen 0:4440ad009afe 37 return true;
MikamiUitOpen 0:4440ad009afe 38 }
MikamiUitOpen 0:4440ad009afe 39
MikamiUitOpen 0:4440ad009afe 40 // バッファが満杯で,true を返す
MikamiUitOpen 0:4440ad009afe 41 bool IsFull()
MikamiUitOpen 0:4440ad009afe 42 {
MikamiUitOpen 0:4440ad009afe 43 bool temp = full_;
MikamiUitOpen 0:4440ad009afe 44 if (full_) full_ = false;
MikamiUitOpen 0:4440ad009afe 45 return temp;
MikamiUitOpen 0:4440ad009afe 46 }
MikamiUitOpen 0:4440ad009afe 47
MikamiUitOpen 0:4440ad009afe 48 private:
MikamiUitOpen 0:4440ad009afe 49 const int N_; // バッファのサイズに対応する値
MikamiUitOpen 0:4440ad009afe 50 Array<float> buf_; // バッファ
MikamiUitOpen 0:4440ad009afe 51 int index_; // 入力データのカウンタ
MikamiUitOpen 0:4440ad009afe 52 bool full_; // 満杯の場合 true
MikamiUitOpen 0:4440ad009afe 53
MikamiUitOpen 0:4440ad009afe 54 // コピー・コンストラクタおよび代入演算子の禁止のため
MikamiUitOpen 0:4440ad009afe 55 InputBuffer(const InputBuffer&);
MikamiUitOpen 0:4440ad009afe 56 InputBuffer& operator=(const InputBuffer&);
MikamiUitOpen 0:4440ad009afe 57 };
MikamiUitOpen 0:4440ad009afe 58 #endif // INPUT_BUFFER_HPP