注册登录

基于STM32的多种printf用法

在调试代码的时候,最常用的就是使用printf函数来输出一些打印信息,提示自己代码的执行情况。

如果你的UART串口不够用,还要用printf,此时该怎么办?

方法其实是有的,那就是:使用SWO/SWV。

SWO:Serial Wire Output,串行线输出

SWD:Serial Wire Viewer,串行线查看器

一、常见printf输出

1.UART打印

微信图片_20190703125938.png

这种使用UART串口输出,需要占用一个硬件串口。

2.Keil MDK-ARM Viewer输出

微信图片_20190703125944.jpg

3.IAR EWARM终端输出

微信图片_20190703125947.jpg

4.ST-LINK Utility SWV输出

微信图片_20190703130008.jpg

这后面三种不占用硬件UART,使用ITM机制。

二、UART映射printf

这种方法应该很多人都知道,就是使用硬件UART串口映射,实现printf打印输出。

对于Keil、 IAR,只需要添加如下代码,就可以使用printf函数:

    #include "stdio.h"int fputc(int ch, FILE *f){  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 10xFFFF);  return ch;}

    意思就是将UART输出(串口输出一个字符)进行映射。

    三、Keil MDK-ARM Viewer输出

    针对2、3、4输出:

    微信图片_20190703130013.jpg

    添加代码:

      #include "stdio.h"int fputc(int ch, FILE *f){  ITM_SendChar(ch);  return ch;}

      在Keil的Options中设置:

      微信图片_20190703130016.jpg

      提示:Core Clock内核时钟要和你实际时钟对应。

      四、IAR EWARM终端输出

      1.Oprtins设置:

      微信图片_20190703130020.jpg

      微信图片_20190703130023.jpg

      2.SWO配置

      微信图片_20190703130027.jpg

      微信图片_20190703130030.png

      微信图片_20190703130035.png

      五、ST-LINK Utility SWV输出

      工具在线查看输出信息,需要上面配置代码,通过ST-Link链接即可。

      微信图片_20190703130039.jpg

      微信图片_20190703130043.jpg

      0条回复

      作者
      用户头像
      文章 0关注 0粉丝 0
      相关文章
      联系客服