打印
[活动专区]

【AT-START-F407测评】+2 AT-link使用swo接口调试

[复制链接]
541|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 6552918 于 2021-2-27 15:21 编辑

ITM是什么在这里我就不再过多讲解,大家可以自行搜索,在这要讲的是在AT-START-F407上如何使用ITM进行调试。
首先我们看一下AT-START-F407的原理图,在板载的AT-link上竟然是带SWO的,这是让我很意外的,因为现在市面上的DAP link带SWO功能的确实不多,有这个管脚
我们就能使用芯片上的ITM功能了,为调试增加了一种方便的途径

SWO管脚连接到407的PB3上,与JTAG的JDO复用
要使用SWO我们再来看一下芯片用户手册上是怎么介绍的

了解了上述信息我们就来看看在代码中怎么使用吧
找一个工作正常的工程,配置一下使能ITM,这里使用的是MDK5,打开 魔术棒,进行配置


这里要注意填写的内核时钟要与程序配置的一致

在程序内添加如下测试代码

volatile int32_t ITM_RxBuffer = ITM_RXBUFFER_EMPTY; 是ITM接收数据是需要用到的定义
下面这两行代码,是使能ITM功能,实际上和上面使用魔术棒的页面配置功能是一致的,但MDK有问题,有时魔术棒配置完打开,但实际并没有打开,我在其他MCU上也试过,的确存在这个问题,为了保险,索性就把这两行代码加上了。
MCUDBG->CTRL&=0xffdf;
MCUDBG->CTRL|=0x0020;

如果ITM开启正常,MCUDBG寄存器的配置会改变
ITM_SendChar('2'); 这行代码是使用ITM发送数据,数据发送后经由SWO管脚传输,下图可以看到运行效果。

下面这两行代码是使用ITM接收数据,当接收到数据后再发送出来,实现回环测试功能。
while (ITM_CheckChar() != 1) __NOP();
ITM_SendChar(ITM_ReceiveChar());

当在Debug (printf) Viewer窗口输入数据后,代码会运行到断点处的发送语句,否则会一直在前面的while语句死等。
通过上面的测试,ITM已经测试完成,但我们平时调试时,更多的是使用printf函数进行调试输出,我们再来看一下如何将ITM与printf函数结合到一起。
本次使用printf输出是在MDK的AC5编译器下测试的
重新映射fputc函数,将return ITM_SendChar(ch);添加到函数内即可
再将魔术棒内的使能微库选项打开,是不是很简单?
下面我们来看一下效果,使用两种不同的函数,发送的结果都能触显在调试串口内。

这样,以后我们调试就多了一种新的输出调试信息的方法了,在这里还要给原厂点赞,用心的将DAP-link上的SWO管脚接出来了!!!!

Snipaste_2021-02-18_21-58-53.png (59.56 KB )

Snipaste_2021-02-18_21-58-53.png

Snipaste_2021-02-18_22-10-12.png (245.89 KB )

Snipaste_2021-02-18_22-10-12.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

100

主题

1183

帖子

5

粉丝