前回は、SW4STM32を使って、F401REでLチカをやりましたが、今回はLEDの点滅にあわせて、PCと繋いだF401REから、シリアル通信で、ON/OFFをPCに伝える。
○TeraTermの準備
Windowsでシリアル通信を行うために、TeraTermを用意します。
TeraTermのサイトからexeファイルをダウンロードし、インストールします。
○CubeMXでシリアル通信を使う設定にする
SW4STM32を起動し、"Window" > "Other" と進み、出てきたウィンドウで "Other" > "STM32CubeMX" と進み、CubeMXを起動する。
CubeMXのサブウィンドウが出たら、前回のプロジェクトに書き足すので "Load Project" を押し、前回作ったプロジェクトを開く。
"Pinout"タブでピンをどのように割り当てるかを決めるが、ここではF401REに付いているMini-USB端子を使って通信するので、左の "Configuration" の中のUSART2のModeをAsynchronousに設定する。(F401REが付属のデバックモジュールを介してPCと接続するのに使うピンはUSART2の為)
次に、"Configuration"タブでUSARTについて設定します。ConectivityのUSART2を押すと、 "USART2 Configuration"というウィンドウが出るので、"GPIO settings"タブでPA2/PA3ピンともプルアップし、スピードを"High"にします。
最後にジェネレートするのですが、その前にプロジェクトのmain.cファイルのバックアップを行います。Lチカのプログラムは簡単なので行わなくてもいいですが、既にあるプロジェクトに上書きする形でジェネレートするとプログラムが消えてしますことがあります。
○SW4STM32のエラー消し
元々あるプロジェクトにCubeMXを使ってジェネレートしなおした場合、SW4STM32側に追加された関数が未定義である等のエラーが出ます。このような時は、"Project"タブ > "Clean" > "Clean All Project" を行い、"Project"タブ > "Build All" を行います。ただし、これでもエラーが直らない場合、プロジェクトを削除し(ファイルそのものを消すわけではない)、もう一度インポートしなおすことで解消されます。
○プログラミング
main.c内のmain()関数で、whileループのところに下記のように書き加えます。
//---------------------------------------------
char str[16]={0};
while(){
// LED-ON
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
sprintf(str,"ON ");
HAL_UART_Transmit( &huart2, str, strlen(str), 0xFFFF );
HAL_Delay(1000);
// LED-OFF
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
sprintf(str,"OFF ");
HAL_UART_Transmit( &huart2, str, strlen(str), 0xFFFF );
HAL_Delay(1000);
}
//----------------------------------------------
printf関数でシリアル通信はできませんでしたが、sprintfは使えるので、それを使って文字列を配列に入れ、その配列をシリアル通信で送ります。
プログラムを書いたら、実行してF401REに書き込みます。
○TeraTermで表示する
まず、TeraTermを起動し("\TeraTermのあるディレクトリ\ttermpro.exe")、"シリアル"を選択し、ポートは STMicro~ となっているものを選択し、"OK" を押す。
次に、"設定" > "シリアルポート" と進み、ボー・レートを115200とする。
※ボーレート:CubeMX→ Configurationタブ→ USART2Configurationウィンドウ→ ParameterSettngsタブ→ BaudRate で確認可能
○TeraTermの準備
Windowsでシリアル通信を行うために、TeraTermを用意します。
TeraTermのサイトからexeファイルをダウンロードし、インストールします。
○CubeMXでシリアル通信を使う設定にする
SW4STM32を起動し、"Window" > "Other" と進み、出てきたウィンドウで "Other" > "STM32CubeMX" と進み、CubeMXを起動する。
CubeMXのサブウィンドウが出たら、前回のプロジェクトに書き足すので "Load Project" を押し、前回作ったプロジェクトを開く。
"Pinout"タブでピンをどのように割り当てるかを決めるが、ここではF401REに付いているMini-USB端子を使って通信するので、左の "Configuration" の中のUSART2のModeをAsynchronousに設定する。(F401REが付属のデバックモジュールを介してPCと接続するのに使うピンはUSART2の為)
次に、"Configuration"タブでUSARTについて設定します。ConectivityのUSART2を押すと、 "USART2 Configuration"というウィンドウが出るので、"GPIO settings"タブでPA2/PA3ピンともプルアップし、スピードを"High"にします。
最後にジェネレートするのですが、その前にプロジェクトのmain.cファイルのバックアップを行います。Lチカのプログラムは簡単なので行わなくてもいいですが、既にあるプロジェクトに上書きする形でジェネレートするとプログラムが消えてしますことがあります。
○SW4STM32のエラー消し
元々あるプロジェクトにCubeMXを使ってジェネレートしなおした場合、SW4STM32側に追加された関数が未定義である等のエラーが出ます。このような時は、"Project"タブ > "Clean" > "Clean All Project" を行い、"Project"タブ > "Build All" を行います。ただし、これでもエラーが直らない場合、プロジェクトを削除し(ファイルそのものを消すわけではない)、もう一度インポートしなおすことで解消されます。
○プログラミング
main.c内のmain()関数で、whileループのところに下記のように書き加えます。
//---------------------------------------------
char str[16]={0};
while(){
// LED-ON
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
sprintf(str,"ON ");
HAL_UART_Transmit( &huart2, str, strlen(str), 0xFFFF );
HAL_Delay(1000);
// LED-OFF
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
sprintf(str,"OFF ");
HAL_UART_Transmit( &huart2, str, strlen(str), 0xFFFF );
HAL_Delay(1000);
}
//----------------------------------------------
printf関数でシリアル通信はできませんでしたが、sprintfは使えるので、それを使って文字列を配列に入れ、その配列をシリアル通信で送ります。
プログラムを書いたら、実行してF401REに書き込みます。
○TeraTermで表示する
まず、TeraTermを起動し("\TeraTermのあるディレクトリ\ttermpro.exe")、"シリアル"を選択し、ポートは STMicro~ となっているものを選択し、"OK" を押す。
次に、"設定" > "シリアルポート" と進み、ボー・レートを115200とする。
※ボーレート:CubeMX→ Configurationタブ→ USART2Configurationウィンドウ→ ParameterSettngsタブ→ BaudRate で確認可能
0 件のコメント:
コメントを投稿