什么是ITM调试功能?

STM32 有一个代码跟踪功能,即 ITM,这个调试功能非常强大,可以替代串口输入输出功能,而且只需要占用一根 I/O 线就可以实现。

当然它的好处不仅仅体现在这里,在调试嵌入式操作系统代码时你会发现相当方便。

怎么用ITM?

那么现在正式开始讲述如何利用 ITM 实现以上功能。

首先需要知道一点的就是 STM32 支持多种调试器,这里我以 ST-LINK 为例进行说明。

1. 增加一根ITM调试线接入到仿真器

一般的 ST-LINK 都是采用四线制,即VCC、GND、TMS/SWDIO、TCK/SWCLK,实际上只要再增加一根线就能实现 ITM 调试功能。

2. 那么这个神秘的 I/O 口是哪一个呢?

就是 PB3 了,所以如果你需要使用 ITM 调试的话,你就需要保留这个 I/O 口了,不过这个 I/O 口的复用功能还挺多的,所以如果你想利用它的复用功能,就只能先用 ITM 调试其它的功能模块,和 PB3 有关的功能模块就留在最后用别的调试方法调试了。

3. 支持ITM 的调试有哪些?

注意:CMSIS-DAP 调试器并不支持这个功能,但是 J-LINK 是可以的。