Keil下使用STlink重定向printf的配置
1. printf 重定向
Keil默认下使用Micro LIB库,
该库调用 fputs 实现 printf,如下描述:
所以需要实现fputs函数,以调用printf函数,如下:
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch);
}
只需要在需要打印的位置调用printf即可。
HAL_Delay(500);
printf("Hello world.n");
2. STM32 ST-LINK Utility配置
打开STM32 ST-LINK Utility,点击ST-Link菜单项,进入Serial Wire Viewer界面如下,配置System clock为单片机运行的时钟,根据实际时钟配置,此处为100MHz,点击Start 即可看到输出。
3. Keil配置
在Keil软件下的Debug配置界面,进入STlink trace的配置,如下图:
配置Core Clock时钟,Trace Enable以及ITM Stimulus Ports。然后调试代码,点击F5运行。如下图所示:
在Debug (printf)Viewer窗口可以看到printf的输出。
如果没有该窗口,通过菜单View调出:
PS:Debug Viewer仅在调试状态下才有,所以在Keil下看日志需要在Debug状态下。
4. 总结
- 使用STlink 下载,调试很方便,配置简单,不需要使用额外的外设,例如串口,即可实现LOG输出;
- 在Keil下使用STlink,看代码,日志不需要切换软件,工作更高效。
Keil下使用STlink重定向printf的配置
1. printf 重定向
Keil默认下使用Micro LIB库,
该库调用 fputs 实现 printf,如下描述:
所以需要实现fputs函数,以调用printf函数,如下:
int fputc(int ch, FILE *f)
{
ITM_SendChar(ch);
}
只需要在需要打印的位置调用printf即可。
HAL_Delay(500);
printf("Hello world.n");
2. STM32 ST-LINK Utility配置
打开STM32 ST-LINK Utility,点击ST-Link菜单项,进入Serial Wire Viewer界面如下,配置System clock为单片机运行的时钟,根据实际时钟配置,此处为100MHz,点击Start 即可看到输出。
3. Keil配置
在Keil软件下的Debug配置界面,进入STlink trace的配置,如下图:
配置Core Clock时钟,Trace Enable以及ITM Stimulus Ports。然后调试代码,点击F5运行。如下图所示:
在Debug (printf)Viewer窗口可以看到printf的输出。
如果没有该窗口,通过菜单View调出:
PS:Debug Viewer仅在调试状态下才有,所以在Keil下看日志需要在Debug状态下。
4. 总结
- 使用STlink 下载,调试很方便,配置简单,不需要使用额外的外设,例如串口,即可实现LOG输出;
- 在Keil下使用STlink,看代码,日志不需要切换软件,工作更高效。
举报