一
1、SWO功能简介
SWO也叫做trace(跟踪)功能,通过此功能,只需要在SWD调试基础上增加一条SWO线缆,就可以实现类似串口输出功能,配合printf函数打印相应的信息到utility窗口中。此功能不占用串口资源,无需在中断中执行。
2、ITM(指令跟踪微单元)简介
我们此次功能实现是通过调用ITM实现的。
ITM是一应用驱动的跟踪源,它支持printf类的调试手段来跟踪操作系统(OS)和应用事件,并发布判定的系统信息。ITM以包的形式发布跟踪信息,它由以下部分组成:
● 软件跟踪:软件可以通过直接写ITM激发寄存器来发布包信息。
● 硬件跟踪:ITM会发布由DWT产生的信息包。
● 时间戳:时间戳被发布到相应的包上。ITM包含一个21位的计数器以产生时间戳。Cortex-M3的时钟或串行线观测器(Serial Wire Viewer)的位时钟率给计数器提供时钟。
由ITM发送的信息包输出到TPIU(Trace Port Interface Unit),TPIU再添加一些额外的包(参考TPIU),然后输出完整的包序列给调试器。
3、使用代码
#include "main.h"
#include "stdio.h"
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch);
return ch;
}
int main(void)
{
HAL_Init();
SystemClock_Config();
while (1)
{
printf("test swo\r\n");
HAL_Delay(2);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
4、打开 STM32CubeProgrammer,选择SWV,并开始执行


Comments | NOTHING