マイコン入門spacer ad
トップページに戻る(マイコン徹底入門:STM32で始めるARM/Cortex-M3組み込み開発)
「マイコン徹底入門」とは? |  「マイコン徹底入門」を読む |  ダウンロード |  掲示板 |  筆者の自己紹介


Previous: 11. 独立型ウォッチドッグタイマ

Up: 11. 独立型ウォッチドッグタイマ

Next: 11.1.1. アクセス可否の設定


マイコン徹底入門:周辺回路編:STM32のペリフェラルを活用: 11. 独立型ウォッチドッグタイマ:

11.1. 無限ループの例(値のチェック漏れ)

サンプルプログラム

iwdg_infinite_loop_1

 ターミナルからの入力に応じてオンボードLEDの点滅速度をコントロールするプログラムです。マイコンボードへの回路の接続は不要です。

 点灯消灯との間の時間をdelay_ms関数をループして実行させて稼いでいます。が、カウンタ(変数i)を減算するステップ幅(変数diff)を変更させて、カウンタが0以下になるまでのスピードを変化させています。

i = 500;

while(i>0)

? {

??? delay_ms(1);

??? i = i - diff;

? }

 変数diffが大きくなればなるほど減算が早くなり、小さくなれば遅くなるわけですが、このプログラムには、diffがとる値の範囲を確認するルーチンがありません。そのためsを押し続けると、diffはやがて0になります。0になるとカウンタが減算されませんから無限ループに陥ります。ここで独立型ウォッチドッグがアンダーフローして、システムがリセットされます。


Previous: 11. 独立型ウォッチドッグタイマ

Up: 11. 独立型ウォッチドッグタイマ

Next: 11.1.1. アクセス可否の設定


このページはITと知的財産の法律情報「法務ネット」の管理人が制作・運営しています。
_Toc266801166