はじめに
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に表示されました。