RYMCU

STM32 HAL 库实现 printf 串口打印调试信息

Hugh 2 年前
# printf # HAL库 # STM32 # 串口打印

在代码调试过程中,经常使用 printf 函数输出调试信息。我们重定义 printf 函数,通过串口输出调试信息。

step1 main.c 文件中添加头文件

#include "stdio.h"

step2 重定义 fputc 函数,代码添加至 main.c

#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch. FILE *f)
#endif /* __GNUC__ */

//重定向printf函数
PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);//输出指向串口USART1
    return ch;
}

printf 函数实际上通过调用 fputc 函数实现输出,因此如上代码所示,在 fputc 函数中输出指向串口 UART1 即可。

step3 printf 函数输出示例

main.c 文件 while(1) 函数添加代码如下:

while (1)
  {
      printf("hello,enjoy!rn");
      HAL_Delay(1000);
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }

输出结果如下:
printf.jpg

后发布评论