メディア

仮想COMポート(Virtual COM Port)の使い方Q&Aで学ぶマイコン講座(78)(4/4 ページ)

» 2023年03月03日 10時00分 公開
前のページへ 1|2|3|4       

(2)printfを使う

 PCのターミナルソフトでUARTのデータを受信し、そのデータを画面上に表示する場合、ASCIIコードでないと読み取れません。

 しかし、マイコン内部(または外部)の通信では、1または0のバイナリデータを直接やりとりするため、そのままターミナルソフトに送っても、ASCIIコードではないため読めません。

 そこで、C言語の標準入出力関数「printf」を使います。「printf」を使用すれば、浮動小数点の値もターミナルソフトで表示できます。

 実際のコーディングでは、「#include “arm_math.h” 」の下に「#include <stdio.h>」を入れます。これは、printf用のarmの標準ファイルです。次にprintfを使用するときのidefの記述を記入する必要があります。idefの記述は、使用する統合開発ツールによって若干異なるため、各ツールの仕様をマニュアルなどで確認してください。

 そして、printf("%f\n\r", 変数);の記述を入れます。変数には出力したい値を入れておきます。

 最後に、PUTCHAR_PROTOTYPEを入れます。例えば、次のような記述です。

// brief Retargets the C library printf function to the USART.

PUTCHAR_PROTOTYPE

   {

   HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF);

   return ch;

    }

 printfを使う際、統合開発ツールのオプション設定を行う必要がある場合があります。特に、浮動小数点演算値を取り扱う時には、オプション設定が必要になります。オプション設定については各ツールの仕様をマニュアルなどで確認してください。

(3)ターミナルソフトの設定

 PC側のターミナルソフトの設定を行います。ここでは、Tera Termを例にして説明します。

 シリアルポートは、STM32 Nucleoボードにつながっているシリアルポートを選びます。この例では「COMn:STMicroelectronics STLinkVirtual COM Port」です。設定からシリアルポートを選び、スピードを115200に設定します。Tera Termのデフォルトのスピードは9600ビット/秒(bps)の場合が多いですが、せっかくマイコンが115200bpsの高速通信(12倍)に対応しているので、115200bpsで通信した方が、反応が良くなります。このスピードは、STM32CubeMXでUSART2の設定を行った通信速度と合わせる必要があります(図5

<strong>図5:PCのターミナルソフトの設定(Tera Termの場合)</strong>[クリックで拡大] 図5:PCのターミナルソフトの設定(Tera Termの場合)

(5)プログラムの実行

 プログラムを実行すると、printfで出力された変数の値がPC側のターミナルソフトの画面上に表示されます。

 図6は温度センサーで、室温をA-Dコンバーターで繰り返し測定し、その値をprintfで出力したものです。Tera Termの画面には、測定された温度が次々と表示されます。

<strong>図6:プログラムの実行</strong>[クリックで拡大] 図6:プログラムの実行[クリックで拡大]

(次の記事を読む)

Q&Aで学ぶマイコン講座:過去の質問一覧はこちら

前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.