[ST-LINK] ST-LINKでBlue Pillにプログラミング - 受信割り込みを使用してシリアル通信を行う

はじめに

ST-LINKでBlue Pillにプログラミング - LEDを点滅させるのセットを使用して、シリアル通信を行ってみます。

PC上のターミナルから何か入力すると受信割り込みが発生し、ターミナルにエコーバックさせることが目標です。

今回は更にターミナルソフトとUSB-シリアル変換基板を追加で使用します。ターミナルソフトはTera Term、USB-シリアル変換基板はHW-417-V1.2というもので、アマゾンとかいろいろなネットショップで売られている基板です。安いのでこれにしました。ピンアサインとかはGoogleで検索すると出てくると思います。

動作環境

  • STM32CubeIDE 1.7.0
  • Blue Pill
  • ST-LINK
  • HW-417-V1.2
  • Windows10
  • Tera Term



STM32CubeIDEを起動

前回同様、STM32CubeIDE 1.7.0を起動。

Start new STM32 projectをクリック。

STM32F103C8を選択してNextをクリック。

Project NameをBluPillTest03としてFinishをクリック。もちろん他の名前でもいいです。

PA9をUSART1_TXに、PA10をUSART_RXにアサインします。

USART1を選択し、ModeをAsynchronous、USART1 global interruptのEnabledをチェック。

Parameter Settingsはこのままで、Baud Rateは115200Bits/s。Ctrl-sで保存。Do you want generate Code?でYesをクリック。

main.cにプログラムを追加します。

/* Private user code -------------------*/
/* USER CODE BEGIN 0 */
static char buffer[1];
/* USER CODE END 0 */

グローバル変数としてバッファを用意します。

while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
HAL_UART_Receive_IT(&huart1, buffer, 1);
}
/* USER CODE END 3 */

whileの中に受信の関数を追加します。

/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit_IT(&huart1, buffer, 1);
}
/* USER CODE END 4 */

割り込みルーチンを追加します。この中で受信したデータをそのまま送信しています。

この左側のピンの信号は、上から

DTR
RX
TX
VCC
CTS
GND

とアサインされているようなので、Blue Pillとは

PA9   -    RX
PA10 -    TX
G      -    GND

と接続します。

Tera Termを起動し、シリアルの速度を115200に設定し、「現在の接続を再設定」をクリック。

ST-LINKでBlue Pillにプログラミング - LEDを点滅させるのときと同様Buildを行いRunを実行。

キーボードから、abcdefgと入力すると、Tera Teramに表示されました。

© 2025 サニーサイド