STM32でUARTを使ってみる
今回はSTM32のHALを利用して、Nucleo-F401REボード上のボタンを押してUSBで接続したPCとUART通信して「Hello World!」と表示させてみたのでその時のメモを残しておく。
ちなみに私は以下の本を読みながら遊んでいる。STM32CubeIDEの細かい設定方法は書かないので、詳しくは以下の本を読んでください(丸投げ)。あと、まだ内容を十分理解せずに書いている部分もあるのであしからず。
開発環境
Windows 10
STM Nucleo-F401RE
Amazon Corretto 8
STM32CubeIDE (Version: 1.13.0)
Tera Term
GPIO割り込みの設定
Projectは「STM32 Project」からBoard SelectorでNucleo-F401REを選択して作成する。作成したら、iocファイルのPinout&ConfigurationでPC13 pinをGPIO_EXTI13に設定。
他の設定はデフォルトでOK。これで準備完了。
UARTで文字表示
main.cのUSER CODEにコードを追加していく。以下に追加したコードを羅列していく。
/* USER CODE BEGIN 0 */ __IO uint8_t Pushed; /* USER CODE END 0 */
/* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ Pushed = 0; while(Pushed == 0); uint8_t Buf[] = "Hello World!\r\n"; HAL_UART_Transmit(&huart2, Buf, strlen((char*)Buf), 1000); } /* USER CODE END 3 */
/* USER CODE BEGIN 4 */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { Pushed = 1; } /* USER CODE END 4 */
あとはPCとUSBケーブルで接続して、ターミナルソフト(私はTera Termを使っている)を接続した状態でBuildして実行するだけ。以下が実行している様子。ちょっとわかりづらいが、青いユーザーボタンを押すとTera Term上に「Hello World!」と表示された。
これで目的は達成。