祈风
Published on 2025-04-08 / 37 Visits
3
0

如何使用RTT调试输出日志

首先下载附件中的几个文件放入项目路径下如图所示

在项目根目录下的CMakeLists.txt中添加能够引用到RTTDebug的CMakeLists.txt的子模块

add_subdirectory(Core/RTTDebug)
# Add linked libraries
target_link_libraries(${CMAKE_PROJECT_NAME}
    stm32cubemx
    rttDebug
    # Add user defined libraries
)

其中Core/RTTDebug是RTTDebug对于项目根目录的相对路径,也可使用./Core/RTTDebug这种方式,要对于自己存放的位置合理修改。

openocd配置文件中添加如下代码

init
rtt setup 0x20000000 2048 "SEGGER RTT"
rtt start
rtt server start 9090 0

其中rtt setup 0x20000000 2048 "SEGGER RTT"是在0x20000000处向后2048个字节寻找RTT控制块,这里的起始地址要根据自己的单片机型号,RAM地址区间酌情修改。 rtt server start 9090 0 代表在上位机localhost的9090端口开启rtt服务用于TCP连接,可以通过连接localhost的9090端口来接收日志信息。

在main函数中添加如下代码

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */
  SEGGER_RTT_Init();
  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();

SEGGER_RTT_Init(); 为初始化RTT控制块的代码,需要在main函数中执行,然后便可通SEGGER_RTT_printf() 函数打印日志输出,并在单片机开始debug时由上位机中支持TCP连接的软件如XShell、Vofa+等软件连接localhost的9090端口实现实时日志查看。

附件:RTTDebug.zip


Comment