STM32F7 WWDG(ウィンドウウォッチドッグ)

最近ずっとSTM32マイコンのペリフェラルの記事を書いているが、今回で終わりだ。最後はWWDG(独立ウォッチドッグ)について。機能が少なくとても単純なのでリファレンスマニュアル(RM0410 Rev4)を見ればすぐに使えるだろう。ここでは特徴や注意点を書こうと思う。

概要

WWDGはダウンカウンタとして動作する。APB1のペリフェラルクロックで動作するため精度は良いが、バスのクロックが停止すると一緒に止まってしまう。

リセット要因

以下のいずれかが発生するとマイコンがリセットされる。
・カウンタの値が0x40未満になる
・カウンタの値がウィンドウ期間中以外にリロード(特定の値に戻す)される

ウィンドウ期間とはカウンタの値がWWDG_CFRレジスタのWビットで設定される値以下、かつ0x40以上の期間のことをいう。

動作

カウンタの値が0x40になった時点で割込み(EWI割込み)を発生させることが可能。

WWDGのダウンカウンタは常に動作しており、例えWWDGが無効化されていてもカウントされている。WWDGを一旦有効にすると無効にする方法は無い。

WDG_CRレジスタのTビットに書き込む際、書き込み直後にリセットしてしまうのを防ぐために常に0x40以上の値を書き込むこと。

DBGMCU_APB1_FZレジスタのDBG_WWDG_STOPビットがクリアされている場合はCPUコアがHalt状態でもWWDGのカウントは止まらない。
DBGMCU_APB1_FZレジスタのDBG_WWDG_STOPビットがセットされている場合はCPUコアがHalt状態になるとWWDGのカウントは止まる。