STM32 6根线SWD的接法

前言

最初改STM32F407板子的时候,因为同事没引出SWO线,导致不能用ITM,调试很不方便。
改了一个临时板子,因为没做验证实验,居然将SWD线引出错了,导致板子废了。
这次,找到一个引脚都引出的开发板(STM32F407ZG(144管脚)),用杜邦线验证了6线SWD的接法,单步调试和打印ITM都正常。

试验

从JLINK仿真器出口接了一块转接板,在6线接口处用杜邦线直接和板子上引出管脚连接。

转接板上6针插座的管脚定义

在这里插入图片描述
VREF : 接板子上的参考电压(3.3V), 这个参考电压,就是板子上MCU用的3.3V电源网络。
SWDIO : SWD接口的输入数据线(从JLINK到板子)
SWCLK : SWD接口的时钟线
SWO : SWD接口的输出线(从板子到JLINK)
NRST : 接板子上MCU的复位引脚
GND : 和板子的数字地相连。

转接板和MCU板的6线连接线序

转接板 => MCU板
VREF(转接板6线插座_1脚, 红色线) => 随便在板子上找个3.3V引出管脚
SWDIO(转接板6线插座_2脚, 绿色线) => MCU_PA13
SWCLK(转接板6线插座_3脚, 蓝色线) => MCU_PA14
SWO(转接板6线插座_4脚, 黄色线) => MCU_PB3
NRST(转接板6线插座_5脚, 橙色线) => MCU_NRST no.25脚,因为这个管脚没引出,就接在JTAG插座的no.15脚
GND (转接板6线插座_6脚, 锗色线)=> 随便在板子上找个GND引出管脚

连接完的接线图

在这里插入图片描述

6根线SWD原理图

在这里插入图片描述

设置ITM

顶级菜单 => Project => Options for Target ‘xx’ … => Debug => Settings
在这里插入图片描述
在这里插入图片描述
作2个ITM封装的文件,加入工程

// @file \BSP\itm\my_ITM.h

#ifndef __MY_ITM_H__
#define __MY_ITM_H__

#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))
#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA          0x01000000

struct __FILE { int handle; /* Add whatever you need here */ };

#endif // #ifndef __MY_ITM_H__

// @file \BSP\itm\my_ITM.c

#include "my_ITM.h"

#include <stdio.h>

#pragma import(__use_no_semihosting)

FILE __stdout;
FILE __stdin;

void _sys_exit(int x) 
{ 
	x = x; 
}

int fputc(int ch, FILE *f) 
{
    if (DEMCR & TRCENA) {
        while (ITM_Port32(0) == 0) {
		};
		
        ITM_Port8(0) = ch;
    }
	
    return(ch);
}

测试ITM

多拉出一根SWO, 就是想全速调试时,看ITM的printf输出.

编译工程时, 为了防止编译问题,需要全部编译工程才靠谱.
在这里插入图片描述
在实现中加入printf打印语句
在调试时,在程序入口处断住时,打开printf查看窗口
顶级菜单 => View => Serial Windows => Debug(printf) Viewer
当程序全速跑起来时,在printf查看窗口,就能看到printf打印的内容了
在这里插入图片描述
如果现场出了问题,可以让现场同事,接上JLINK,用C:\Program Files (x86)\SEGGER\JLink\JLinkSWOViewer.exe 就能看到调试信息,不需要给他工程。

发布了436 篇原创文章 · 获赞 126 · 访问量 175万+

猜你喜欢

转载自blog.csdn.net/LostSpeed/article/details/103437050