本帖最后由 hoop 于 2022-3-19 14:56 编辑
2.3 经Keil平台的Debug(printf) Viewer虚拟终端输出
2.3.1 简介
Keil平台自带有Debug(printf) Viewer接口,在ARM内核集成有常用的scanf和printf等标准输入输出驱动函数的前提下,该接口可用于标准的Printf交互。
2.3.2 例程路径
003_Printf_Test_Keil_JTDO\project\mdk_v 5
2.3.3 环境及硬件设计
2.3.3.1 环境
本方法需在Keil环境下使用,例程支持的编译环境为Keil_V5,硬件电路板为AT-START-F403A_V1.2
2.3.3.2 硬件连接
J-Link/AT-Link&... connection
2.3.4 软件设计
2.3.4.1 头文件
代码工程文件内添加 “stdio.h”;
2.3.4.2 跟踪引脚分配
DEBUG->ctrl_bit.trace_ioen = FALSE;
DEBUG->ctrl_bit.trace_ioen = TRUE;
2.3.4.3 Printf映射
int fputc(int c, FILE *f)
{
if (c == '\n')
{
SER_PutChar('\r');
}
return (SER_PutChar(c));
}
int SER_PutChar (int c)
{
ITM_SendChar(c);
return (c);
}
2.3.5 仿真与下载
勾选如下图4中的Enable,并设定Core值,Core值需与系统时钟相等。
设定串口时钟,通常通过勾选如下图4中的Autodetect max SWO C1来实现。当出现打印乱码时,此时可尝试不勾选Autodetect max SWO C1,并手动修改Prescale Core Clk保证打印信息正常。
随后即可编译代码下载到MCU内,然后进入Debug调试环境中,经View->Serial Windows->Debug (printf) Viewer(下图5)调出虚拟终端窗口,然后运行代码即可看到Hello World被实际打印到了终端交互窗口(下图6)内。
图4. Trace相关设定
图5. Keil虚拟终端窗口路径
图6. Keil虚拟终端交互窗口
注:源版AN0015请参考如下路径https://bbs.21ic.com/forum.php?mod=viewthread&tid=2968842&page=1&extra=#pid11194706
|