セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2025-08-08 現在

mwf_periph_wwdt - WWDT

mwf_periph_wwdt - WWDT
    ウォッチドッグタイマーを利用するため手続きをまとめたペリフェラルオブジェクトです。

    mwf_periph_wwdt - WWDT

    ウォッチドッグタイマーを利用するため手続きをまとめたペリフェラルオブジェクトthe_wwdtを実装しています。

    TWENETでは暗黙に使用されますので、ユーザプログラムでの初期化は不要です。

    コード例

    void setup_func() {
    	mwf::gobal_init_wwdt_manager();
        the_wwdt.init(); // timeout in 4000ms approx.
    }
    
    // in some function called periodically (e.g. invoked by SysTick Timer.)
    void do_every_tick() {
        the_wwdt.refresh();
    }

    class mwf::periph::wwdt

    global_init_wwdt_manager(), global_deinit_wwdt_manager()

    static void global_init_wwdt_manager();
    static void global_deinit_wwdt_manager();

    the_wwdtクラスオブジェクトの生成と破棄を行います。

    init(), deinit()

    void init(uint32_t u32ms = 0);
    void deinit();

    ウォッチドッグタイマーを初期化・停止(※1)します。

    • 初期化時のパラメータu32msはタイムアウトをミリ秒(ms)で指定します。0または省略したときは4000msとなります。
    • ※1 ハードウェアの制約上、一度実行したウォッチドッグタイマーは停止しません。deinit()はライブラリ手続きとして用意しています。(タイマーの再始動時などに deinit()を実行してから init()を再度呼び出す)

    set_timeout()

    void set_timeout(uint32_t u32ms);

    ウォッチドッグタイマーのタイムアウトまでの時間を変更します。u32msにはタイムアウト時間をミリ秒(ms)で指定します。

    • u32msの妥当性の検証はしません。init()では0を規定値としていましたが、本関数で0を与えた場合の振る舞いは未定です。

    refresh()

    void refresh();

    ウォッチドッグタイマーのタイムアウトまでに必ず呼び出すリフレッシュ関数です。

    class mwf::periph::wwdt (sys_ev_handler)

    on_sleep()

    WWDTの停止処理を行います。

    on_wakeup()

    WWDTの始動処理を行います。

    • スリープ前に稼働状態の場合は、WWDTを再度稼働させます。