シリアルモニター【STM32シリアル通信】
STM32マイコンのシリアル通信機能を利用してプログラミングのデバッグを行います。プログラム内の任意の箇所に数値を表示するマイコン専用tsprintf文を挿入してPCの汎用ターミナルソフトでデータを表示することでデバッグを実現します。
プログラム内部の演算結果データや、分岐場所など特定するのに便利なモニターデバッグ用シリアルモニターアプリを紹介します。
割り込みを使用した文字列送信(バッファ付き)をベースにしており、サンプルプログラムではシリアル通信USART3をシリアルモニター用に設定し、送信関数USART3_Send_Stringを定義しています。
サンプルプログラムでは定義したUSART3のシリアル送信をつかってプログラム内の数値や文字列を送信するものです。具体的には2種類の数値data1とdata2を文字列数字String_data1とString_dataに変換して配列に格納したメッセージの文字列と1000ms毎に交互で表示させることをしています。
シリアルモニターを使用するための構成は組み込みマイコン技術入門編の「組み込み開発設計」の組み込みプログラムデバッグで解説しています。
このアプリの使い方は簡単で、実際のアプリケーション内にこのサンプルプログラムで設定しているUSART3部分および割り込み送信関連を転用して、活用してください。
数値-文字列変換にはtsprintf関数を使用していますので、tsprintf.cとそのヘッダファイルtsprintf.hはソースファイルと同じ場所にコピーしておいてください。
tsprintf関数はC言語の標準出力関数printfに近い出力機能をマイコンSTM32用にカスタマイズしたものです。
サンプル例ではプログラム内で扱っているデータをシリアル通信で送信するときに文字列に変換するのに使用します。
tsprintf関数実行例: tsprintf(String, ,"%d",data);
関数の第1引数は文字列を格納する配列変数のポインタ(先頭アドレス)を指定し、第2引数は数字の表示するタイプを指定になっていて以下に示します。
- 10進数表示:%d
- 16進数表示(小文字0-f):%x
- 16進数表示(大文字0-F):%X
- 文字:%c
- ASCII文字列:%s
最後の第3引数には変換したい数値データを指定します。