收到这款敏矽微ME32G070开发板后,我发现我的这款板子是坏的,串口打印部分不能打印,我先烧录了demo文件夹里的串口打印printf函数


打开串口助手

却没有任何数据,我用万用表测量了RX--PA2和TX--PA3,发现和MCU连接断路,查看原理图


我实际已经短接了跳线帽,所以最后得出结论是我的这款板子是坏的

我很希望敏矽微 能让电子发烧友的管理员在给我补发一个好的板子,
我这个串口是坏的,非常影响我的测评使用。
我这个串口是坏的,非常影响我的测评使用。
我这个串口是坏的,非常影响我的测评使用。
为了先代替串口打印功能,我就先使用Jlink自带的RTT软件来进行打印测试log输出.
什么情况下需要用到J-Link RTT打印输出调试信息?主要是当我目当前没有功能正常的串口,但引出了SWD烧录口,并且需要输出一些log进行调试验证等,这时我们可以通过SWD口,用Jlink工具读取log。
使用RTT可以从MCU快速输出调试信息和数据,且不影响MCU的实时性。只要支持J-Link的MCU就可使用RTT功能,兼容性非常强。
我们先看移植过程
就直接用demo里的print工程做模版,添加Jlink 的RTT组件包

RTT文件夹放在KEIL工程文件夹里,里面的文件如下:

我在RTT头文件中已经封装好了相应的printf函数宏

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "SEGGER_RTT.h"
#define BIT_SHIFT_8 (8u)
#define SIZE_64 (64u)
#define LVL_ERR (1u) /* error conditions */
#define RESET_VALUE (0x00)
#define SEGGER_INDEX (0)
#define print(fn_, ...) SEGGER_RTT_printf(SEGGER_INDEX,(fn_), ##VA_ARGS);
#define printf(fn_, ...) SEGGER_RTT_printf(SEGGER_INDEX,(fn_), ##VA_ARGS);
#define LOG(format, args...) SEGGER_RTT_printf(SEGGER_INDEX, "[%s:%d] "format, FILE, LINE, ##args)
在工程中加入RTT里的源文件

同时在头文件里添加路劲

添加如下代码到main主函数中
printf("welcome to use Jlink RTT printf \r\n");
printf("ME32G070RBT6 \r\n");
printf("Let us begin to work\r\n");
while(1)
{
printf("RTT -- 100 ms/per\r\n");
SYS_Delay(100);
}

打开
JLinkRTTViewer.exe
进行配置

点击OK,就出现了调试调试打印界面

和我写的代码吻合,证明打印结果OK!
虽然JLINK的RTT可以打印出log,但是它无法打印中文汉字和浮点数,所以我还是希望 敏矽微 能给我补发一个好的 ME32G070开发板,方便我后面做电机FOC等复杂算法来实现浮点数据的打印功能。在此先谢谢电子发烧友群主。
Jlink RTT的打印结果视频如下