如何将printf函数重定向到用于调试消息的UART

1.简介

在代码开发过程中,在终端窗口中显示关于v。。。

ST Nucleo板上嵌入的ST LINK具有虚拟com端口功能,我们可以使用重定向到STM32的UART的printf轻松获得终端上的调试信息,该UART连接到用于虚拟com端口的ST LINK引脚。
在这篇文章中,我将向您展示如何将printf输出重定向到STM32 UART外围设备,该外围设备连接到嵌入式ST链路上的UART引脚,该引脚将传输到主机并通过windows终端程序Tera Term显示。
 

2.先决条件

  • 硬件:
    • Micro USB电缆:用于为板供电和编程
    • 核苷酸-G070RB

 
  • 软件
    • STM32管

3.理论


在Nulceo-G070RB板上,嵌入式ST-LINK/V2连接到PA2(UART TX)和PA3 (UART RX)。这些端口引脚具有USART2替代功能。printf将被重定向为使用PA2和PA3。我们将。。。
 

4.步骤

  1. 打开STM32CubIDE
  2. 使用NUCLEO-G007RB板创建新项目


 
  1. 为项目命名
  • 在本例中,项目将命名为“Printf”。

 
  1. 使用默认设置初始化所有外围设备:
  • 要执行此操作,请单击“是”。

 
  1. 确保USART2已被选择、配置并映射到PA2和PA3,如下所示:
  • 默认情况下,这是在从选定的Nucleo板启动项目时配置的。
  • 首先确保USART2已激活,如图所示 此处:

  • 它应该在异步模式下配置,如下红色矩形所示的设置:
  • 确保USART2备用功能已映射到PA2和P3,这两个功能(分别)连接到Nucleo板上ST-LINK的TX和RX引脚。
  1. 生成代码
  • 保存项目将生成代码。
  1. 添加代码以切换LED:
  • 此代码将把printf函数的输出重定向到USART2。printf函数正在调用fputc以通过USART传输输出。
  • 在main.c中,添加以下代码:
/*用户代码开始PFP*/#define PUTCHAR_PROTOTYPE int __io_PUTCHAR(int ch{/*将fputc的实现放在此处*//*例如,将一个字符写入USART1并循环直到传输结束*/HAL_UART_Transmit(&huart2,(uint8_t*)&ch,1,0xFFFF);返回ch;}/*用户代码end 4*/
 
  1. 构建项目,进入调试模式并运行代码
要执行代码:
  • 首先进入调试会话:
  • 然后执行代码:
  • 现在打开像TeraTerm这样的终端应用程序
  • 配置到ST-LINK虚拟COM端口的串行端口连接。
  • 选择以下设置:
  • 现在,您将看到printf消息“Hello World”,每秒钟显示一次。

5.链接

STM32G0-产品介绍
STM32G0x0基于Arm®的高级32位MCU-参考手册
STM32CubeIDE-STM32集成开发环境-STMicroelectronics
NUCLEO-G007RB-STM32Nucleo-64开发板,带STM32G007RB MCU,支持Arduino和ST morp。。。
特拉期限