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


Previous: 12.2.4. 挙動がおかしい場合の対処方法

Up: 12. デバッグ

Next: 12.4. 計測器の利用


マイコン徹底入門:導入編:オープンソースでCortex-M3/STM32の開発環境を無償構築: 12. デバッグ:

12.3. asseart関数・マクロ

 C言語のコンパイラは、ソースコードが文法的に正しいかはチェックしてくれます。しかしソースコードの意味的な内容が正しいかまではチェックしてくれません。これは仕方のないことではあるのですが、関数の引数の使い方については、その関数の中で、引数が適正であるかをチェックするルーチンを設ければ、適正かどうかを確認できます。例えば割り算を行う関数で、0で割ることを防止するために、引数が0の場合にはエラーを出して停止するといった具合です。C言語ではこのような引数のチェックのため、assert関数・マクロがよく利用されます。

 STM32のファームウェアでは、各関数の引数が適正であるかをチェックするために、各関数に予めassert関数と同様に機能する、引数のチェックルーチンが埋め込まれています。この機能を利用すると、例えば、USARTの初期設定でフロー制御の有無を設定すべきメンバに、誤ってパリティを設定してしまった場合には、これを検出することができます。

 ファームウェアでは、エラーを検出した際の通知方法はユーザーにゆだねています。本書の環境では、platform_config.hで指定したCOMポートに、エラーが発生したファームウェアのソースコードファイル名と行番号を送信して停止するように実装しています。

 このassert機能は初期状態では無効になっています。有効にするには、

lib/stm32f10x_conf.h

78行目付近にある、

#define USE_FULL_ASSERT??? 1

をコメントを外してください。変更後はファームウェア全体の再コンパイルが必要です。


Previous: 12.2.4. 挙動がおかしい場合の対処方法

Up: 12. デバッグ

Next: 12.4. 計測器の利用


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