CQ出版社セミナ "実習・Armマイコン内蔵ペリフェラルを活用するためのC++プログラミング" で使う外付け回路のテスト

Dependencies:   mbed UIT_SetOutputPortType UIT_AQM1602 UIT_ADT7410

PushButton/PushButton.hpp

Committer:
MikamiUitOpen
Date:
2020-04-02
Revision:
2:3f2be675f975
Parent:
1:0a21041026c7

File content as of revision 2:3f2be675f975:

//------------------------------------------------------------------
//  InterruptIn, Timeout を利用してチャタリングを防止するクラス,ヘッダ
//      割込みサービス・ルーチンは非 static 関数にしている
//
//  2020/02/16, Copyright (c) 2020 MIKAMI, Naoki
//------------------------------------------------------------------

#include "mbed.h"

#ifndef PUSHBUTTON_CLASS_HPP
#define PUSHBUTTON_CLASS_HPP

namespace Mikami
{
    class PushButton
    {
    public:
        enum RiseFall { RISE, FALL };

        // コンストラクタ
        PushButton(PinName pin, PinMode mode, RiseFall rf, void (*Func)(),
                   float time = 0.1);

    private:
        InterruptIn pbSw_;  // Mbed オフィシャル・ライブラリのクラスのオブジェクト
        Timeout enabler_;   // Mbed オフィシャル・ライブラリのクラスのオブジェクト
        void (*fp_)();      // コンストラクタの引数で与えられた関数に対応するポインタ
        float time_;        // InterruptIn 割込みを無効にしている時間
            
        // InterruptIn の割込みサービス・ルーチン
        void IsrIntrIn();

        // Timeout の割込みサービス・ルーチン
        void IsrTimeout();

        // コピー・コンストラクタおよび代入演算子の禁止のため
        PushButton(const PushButton& );
        PushButton& operator=(const PushButton& );
    };
}
#endif  // PUSHBUTTON_CLASS_HPP