ウォッチドッグタイマーを利用するため手続きをまとめたペリフェラルオブジェクトです。
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を再度稼働させます。