Previous: 12.2.4. 挙動がおかしい場合の対処方法 |
Up: 12. デバッグ |
Next: 12.4. 計測器の利用 |
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. 計測器の利用 |