UART出力
STM32マイコンのCubeMX環境(HAL Driver使用)でprintfを使ってUARTに文字列を出力したい場合、下記のようなputchar関数を実装すればよい。この例では標準出力をUART2に出力している。もちろん、あらかじめCubeMXで対応するUARTの設定をおこなって初期化コードを生成しておくこと。
ちなみに、Nucleo-64ボードではUART2がST-LINKチップに接続されており、ST-LINKを経由してPCの仮想COMポートに接続できる。
// 標準出力をUART2へ #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart2, (uint8_t *)&ch, 1, 0xFFFF); return ch; }
デバッガのターミナルI/Oに出力
IARのEWARM環境の場合、デバッガのターミナルI/Oにprintfで文字列を出力することもできる。これには、デバッガのSWO端子が接続されている必要がある。また、上記のUART出力とは排他である。__io_putchar()ないしfputc()が未定義のとき、ターミナルI/Oに出力される。