STM32で Printf() を使い Teraterm で デバッグ
はじめに
1年以上前の 2020年8月にSTM32L432 を用いた開発環境をWindows上で構築した。
この時 非常に参考になったのは、この記事 です。
ここでは、STM32で printf() を使える様にしたので メモ書きとして記します。
Printf()を用いて Tera Term で デバッグ(文字出力)
参考にした記事に Lチカ(STM32 のLEDを点滅) を実現する ソースコードが記載されている。
今回、ここに Printf() を実装した。もちろん、Lチカ 以外でも 同じ方法で Printf()が実現出来る。
※STM32 のUART 設定は、usert.c で行われているので ソースコードを見てください。
デフォルトのままであれば、Terminal Adapter側で下図の設定で動作します。
◎syscalls.cの追加
\Src フォルダーの中に syscalls.c を置く。
syscalls.cは、STM32CubeMX と STM32L4用のパッケージをインストールした時点で下記に
サンプルコードとして置かれているので これをコピーして使う。
C:\Users\xxxx\STM32Cube\Repository\STM32Cube_FW_L4_V1.17.0\Projects\NUCLEO-L432KC\Examples\PWR\PWR_ModesSelection\SW4STM32\syscalls.c
◎main.c のソースコードを変更
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2021 STMicroelectronics.
------- 省略 -------
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <stdio.h>
/* USER CODE END Includes */
------- 省略 -------
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
printf("LED Toggle!!\r\n");
HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
HAL_Delay(5000);//ms
}
/* USER CODE END 3 */
------- 省略 -------
◎usert.c のソースコードを変更
/**
******************************************************************************
* @file usart.c
* @brief This file provides code for the configuration
* of the USART instances.
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2021 STMicroelectronics.
------- 省略 -------
/* USER CODE BEGIN 1 */
/* Add by My.Name for Printf */
#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;
}
/* USER CODE END 1 */
------- 省略 -------
☆2021年11月 3日(水) 午後18時40分 初版(Ver1.00) 作成
Author And Source
この問題について(STM32で Printf() を使い Teraterm で デバッグ), 我々は、より多くの情報をここで見つけました https://qiita.com/ytetsuo/items/f5697418961d8a909dd3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .