CQ出版社セミナ "実習・Armマイコン内蔵ペリフェラルを活用するためのC++プログラミング" で使う外付け回路のテスト
Dependencies: mbed UIT_SetOutputPortType UIT_AQM1602 UIT_ADT7410
Diff: MyTicker14/MyTicker14.hpp
- Revision:
- 0:8c850cf6285d
diff -r 000000000000 -r 8c850cf6285d MyTicker14/MyTicker14.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MyTicker14/MyTicker14.hpp Tue Mar 03 03:30:50 2020 +0000 @@ -0,0 +1,51 @@ +//---------------------------------------------------------------------- +// Ticker と同じような機能のほかに,割込みの時間間隔を設定するメンバ関数を +// 追加した行うクラス,ヘッダ +// +// 2020/02/22, Copyright (c) 2020 MIKAMI, Naoki +//---------------------------------------------------------------------- + +#include "mbed.h" + +#ifndef MYTICKER14_F446_HPP +#define MYTICKER14_F446_HPP + +namespace Mikami +{ + class MyTicker14 + { + public: + MyTicker14(); + // 割込みサービスルーチンの割り当てと割込み周期(μs 単位)の設定 + void Attach_us(void (*Func)(), uint16_t time); + // 割込みサービスルーチンの割り当てと割込み周期(ms 単位)の設定 + void Attach_ms(void (*Func)(), uint16_t time); + // 割込みを有効にする + void Enable() { tim_->DIER |= TIM_DIER_UIE; } + // 割込みを無効にする + void Disable() { tim_->DIER &= ~TIM_DIER_UIE; } + // 割込み周期(μs 単位)の設定 + void SetPeriod_us(uint16_t time); + // 割込み周期(ms 単位)の設定 + void SetPeriod_ms(uint16_t time); + + private: + // 割込みサービス・ルーチンの中で実行される関数のポインタ + static void (*fp_)(); + // タイマに対応する構造体のポインタ + static TIM_TypeDef* const tim_; + static bool created_; + uint32_t intClock_; // TIM14 を駆動するクロック周波数 + + // 割込みサービス・ルーチン + static void Isr(); + // タイマ設定の共通の処理 + void SetCommon(void (*Func)()); + + // コピー・コンストラクタおよび代入演算子の禁止のため + MyTicker14(const MyTicker14& ); + MyTicker14& operator=(const MyTicker14& ); + }; +} +#endif // MYTICKER14_F446_HPP +