mdk 软件内调试 debug (printf) JLINK 与SWD 调试的不同

stm32 打印调试的时候,大部分使用硬件串口进行打印输出。但是近期一个项目中遇到一个问题。就是串口已经都被占用了。没有其他的串口进行打印输出了。对解决问题产生了很大的干扰。基于这个问题,我想了好多办法。最后发现在MDK 软件里面,可以使用调试接口,进行打印输出。省了一个串口。但是从网站都可以搜到JLINK 的方法,但是一旦用到stlink 的swd 模式的时候,就完蛋了。怎么配置都出不来打印。原因很简单:swd 模式是四个管脚:VCC   GND    SWDIO   SWCLK   想要实现软件内打印,还需要接 SWO (即是 stm32 的PB3 TDO )管脚。配置跟下面一样,注意:不同单片机不同的core  频率,就可以了。

 

操作办法,直接上图:

1、找到软件的魔术棒

 

2、软件设置顺序

 

3.1、第一种:需要自己将下面代码拷贝到软件源代码中

#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 needed */ };
FILE __stdout;
FILE __stdin;
 
int fputc(int ch, FILE *f) {
    if (DEMCR & TRCENA) {
        while (ITM_Port32(0) == 0);
        ITM_Port8(0) = ch;
    }
    return(ch);
}

3.2、第二种:可以使用mdk 的内部管理软件来添加调试功能,如下图:

点击完成之后,会看到如下界面:

这样操作完,点击保存就可以了。

4、打开调试界面,操作步骤

 

5、按照上面,全速运行之后,在终端页面就可以看到打印数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值