stm32HALライブラリのprintfの問題

プロジェクトファイルに標準入力および出力ヘッダーファイルを含める

#include "stdio.h"

printfで直接印刷すると、スタックします。その理由は、プロジェクトにprintfのfputc関数がないためです。

stm32cubef4.zipを解凍した後、STM32Cube_FW_F4_V1.11.0 \ Projects \ STM324xG_EVAL \ Examples \ UART \ UART_PrintfのMDKプロジェクトを参照してください。このプロジェクトは、printf()関数の実装方法を提供します。

実際、シリアルポートで文字を出力する機能を実現するのは非常に簡単です。関数名は標準入出力ライブラリヘッダーファイルstdio.hで定義されており、プロトタイプはint fputc(int ch、FILE * f)です。

以下は追加する必要があるコードです

int fputc(int ch,FILE *f)
{
   HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);//hurat1为串口号,根据自己情况进行选择
   return ch;
}

次に、テスト用のメインプログラムです。

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

    /* USER CODE BEGIN 3 */
	 times++;
	 printf("%d times enter there\n",times);
	 HAL_Delay(1000);
  }
  /* USER CODE END 3 */

出力結果

リリース3元の記事 ウォンの賞賛5 ビュー2251

おすすめ

転載: blog.csdn.net/weixin_41866037/article/details/97693366