ファンクション・ジェネレータ.出力信号:正弦波,矩形波,矩形波 (5倍波まで).ノイズの付加が可能.

Dependencies:   mbed SerialTxRxIntr Random

Revision:
0:d11ff22a164f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MyTicker7.hpp	Mon Jul 09 06:05:08 2018 +0000
@@ -0,0 +1,62 @@
+//----------------------------------------------------------------------
+//  TIM7 の Update event (UEV) 割込みを使って,Ticker と同じような機能の
+//  ほかに,割込みの時間間隔を設定するメンバ関数を追加した行うクラス
+//
+//  動作を確認したボード: NUCLEO-F446RE, DISCO-F746
+//
+//    mbed 公式ライブラリの Ticker クラスは,割込みの時間間隔を変更する場合は,
+//  メンバ関数 attach() を呼び出す必要がある.しかし,attach() を呼び出すと,
+//  割込みの時間間隔設定以外の処理も行われるため,アプリケーションによっては
+//  割込み時間間隔が変更される際に,動作が不自然になる場合がある.
+//    この MyTicker7 クラスは,TIM7 の ARR 設定の際に,ARR バッファを使う
+//  ように設定し,UEV 発生までは ARR の値を書き換えないようにした.
+//
+//  2018/06/24, Copyright (c) 2018 MIKAMI, Naoki
+//----------------------------------------------------------------------
+
+#ifndef MYTICKER14_F446_746_HPP
+#define MYTICKER14_F446_746_HPP
+
+#include "mbed.h"
+
+#ifndef TIM7
+#error "This MCU has No TIM7."
+#endif
+
+namespace Mikami
+{
+    class MyTicker7
+    {
+    public:
+        MyTicker7();
+        // 割込みサービスルーチンの割り当てと割り込み周期(μs 単位)の設定
+        void Attach_us(void (*Func)(), uint16_t time);
+        // 割込みサービスルーチンの割り当てと割り込み周期(ms 単位)の設定
+        void Attach_ms(void (*Func)(), uint16_t time);
+        // 割込み停止
+        void Disable() { tim_->DIER &= ~TIM_DIER_UIE; }
+        // 割込み開始
+        void Enable() { 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 void Isr();
+        // タイマ設定の共通の処理
+        void SetCommon(void (*Func)(), uint16_t time);
+        
+        uint32_t maxClock_;     // TIM7 を駆動するクロック周波数
+        
+        // 割り込みサービス・ルーチンの準備と割り込み許可
+        void SetIsr(void (*Func)(), uint16_t time);
+    };
+}
+#endif  // MYTICKER14_F446_746_HPP
+