本帖最后由 小小毛 于 2021-5-24 14:04 编辑

       在写本文之前,参考了网上的一篇文章:
Segger RTT的使用——调试技巧_Andy001847的专栏-CSDN博客 https://blog.csdn.net/Andy001847/article/details/79241984?utm_medium=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-7.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2~default~BlogCommendFromBaidu~default-7.nonecas

很不幸踩坑了,所以才有了今天的文章来总结一下。

       网上很多类似这样介绍的,但是真正按照步骤实践起来却没那么顺利。我按照以上步骤进行操作,发现RTT-Viewer 并没有任何打印,经过一番折腾,
发现文章中介绍的有一个步骤需改更改,才能达到效果。
      按照网上的步骤移植完成了,但是呢?没有成功,一开始还怀疑代码没有移植好,后来才发现不是这个原因。
      最终原因是 内存池地址不对:
      企业微信截图_16213917961830.png
最终我把地址设置为0x20001210,此时打印就正常了!

       如何寻找这个up-buff的地址呢?需要进行在map文件中寻找,一般在调试过程中mdk工程不做大的改动,这个是地址几乎是不变的。
如果有变化,请到map文件中寻找!
企业微信截图_16213917483453.png
最后,看看效果吧。杠杠的!
企业微信截图_16213916594958.png

总结: 对于打印内存地址,需要灵活处理。 有的MCU能自动获取打印内存地址,我使用的国产M0+的mcu,却没有自动识别到内存地址,这也是一个因素吧!也就是国外的RTT软件对国产的mcu的兼容性没有做的那么好!