起因
最近在调试stm32片子,在调试的时候发现,原来的项目代码中没有实现printf函数,一直使用较为原始的打印方式:将需要打印的内容存在数组中(下称资源池),通知DMA进行搬运,最终通过usart输出到屏幕中。

分析
由于源代码中已经实现了stm32 中dma、usart的配置,且输功能正常,只需要简单的将输入到资源池中的数据流进行整形即可。考虑使用库函数

int vsnprintf(char* str, size_t size, const char* format, va_list ap);

来实现。

实现
根据文章分析需要打开MDK project中的MicroLIB

/*va_start、va_end、vsnprintf等需要的头文件*/
#include <stdarg.h>#define WPRINTF_BUFSIZE  1024
uint8 WPRINTF_buf[WPRINTF_BUFSIZE];
void wprintf(const char* fmt, ...)
{va_list args;int32 n;va_start(args, fmt);n = vsnprintf(WPRINTF_buf, WPRINTF_BUFSIZE, fmt, args);va_end(args);/*这里调用原来的usart打印接口*/DEBUG_UART_Write(WPRINTF_buf,(n&0xFFFF));
}

测试
随便在原来的stm32的task中加入一些打印,进行测试

    wprintf("hello:%d.\n\r",cmd[7]);char *p = "okkk";float my_fl = 12.35;wprintf("output:%s.\n\r", p);wprintf("float:%f.\n\r",my_fl);

终端显示:

现在可以凑合使用了。

参考文章:
https://blog.csdn.net/qq_26904271/article/details/80113740
https://blog.csdn.net/clorymmk/article/details/82917978
https://www.cnblogs.com/birdBull/p/10939597.html

stm32中实现printf打印相关推荐

  1. STM32高级开发(12)-在GCC中使用printf打印串口数据

    在大家使用keil或是iar开发stm32等arm芯片的时候,想来最不陌生的就是使用print通过串口输出一些数据,用来调试或是其他作用.但是要明确的是由于keil iar gcc 他们使用的标准C语 ...

  2. C语言中使用printf()打印漂亮的颜色字体

    1. 打印炫彩字体 :  "\033[字背景颜色;字体颜色m字符串\033[0m" 格式如:printf("\033[1;33m Hello World. \033[0m ...

  3. 关于STM32中使用printf通过串口发送数据

    printf 是源文件 stdio.h 中的函数(同c语言) 使用 printf 必须先引用源文件:#include "stdio.h" printf 内部会调用 fputc 函数 ...

  4. C语言之#define,#ifdef,typedef,extern,statis,__weak的用法,看懂stm32中的.h和.c文件

    1. #define c语言中的预处理命令,用于宏定义. 示例: #define number 0xff(不用加分号) 这里就是用number代替了0xff. 2. #ifdef 条件编译,满足条件时 ...

  5. QT 使用printf() 打印结果

    printf()打印 尝试在QT中使用printf打印结果,但是每次都是要关闭程序后,才能在控制台显示,虽然结果都显示了出来,但是不是我们要的时机出现. 原来是因为打印结果在缓冲区未被释放,所以无法显 ...

  6. STM32中printf重定向到串口

    学习STM32过程中,经常打交道的莫过于串口,你可以将任何信息,当然重要的是调试信息打印到串口中输出,总是用一个字节发送函数或者字符串发送函数 总是有些不放便,之前编程中熟悉的莫过于printf了,下 ...

  7. keil 中调用printf 的使用 在软件调试下 serial windows 下显示打印信息

    致我的青春和一起在路上奔跑的兄弟.愿我们能在路上感到温暖和力量.... 在程序调试中,不断的打印出变量和一些中间值是相当重要的,在单片机和arm的调试程序中printf 也相当的有用: 目录 1.软件 ...

  8. STM32中关于串口通信的printf()函数重定向问题

    在STM32串口通信程序中使用printf()函数发送数据非常方便,但是需要先进行简单的配置,下面介绍两种配置方法. 方法一.对工程属性进行配置 第1步:在main.c中包含"stdio.h ...

  9. C语言中控制printf的打印颜色实例及vt100的控制符

    C语言中控制printf的打印颜色实例及vt100的控制符文档 收藏 转自:http://blog.csdn.net/evimacsl/archive/2010/01/18/5206836.aspx ...

最新文章

  1. 温州大学《机器学习》课程课件(九、支持向量机)
  2. 【Hibernate】Hibernate实体关系映射实例解析
  3. Mining Precision Interface From Query Logs -- 学习笔记(二)
  4. 自学前端的误区和痛点解决办法
  5. git学习相关的博客地址
  6. Segment Descriptors, Code- and Data-Segment Descriptor Types
  7. 《季羡林先生》读书笔记-3
  8. 把1,2,3…n*n 的数字按照顺时针螺旋的形式填入数字矩阵
  9. H3C交换机配置VLAN
  10. 怎么删除手机html,两种方法教你如何删除手机模拟大师
  11. selenium爬取维基百科信息
  12. python爬取b站_python3 爬取B站视频弹幕
  13. java求抽象类shape_java 抽象类 Shape
  14. canvas绘制出货单
  15. 如何将vob格式转换成mp4
  16. Python - 装机系列2 Ubuntu(云)
  17. 图标照旧的效果_这不是而且不能成为“一切照旧”
  18. IT桔子 - 千里马俱乐部
  19. python虚拟环境中安装diango_安装Python虚拟环境和django
  20. KM算法matlab实现

热门文章

  1. 计算机的高级操作,计算机高级操作员考试大纲是什么
  2. Android 安装最新版的Android Studio软件(最新版3.6)
  3. 面试题:基于Python的青蛙跳台阶两种解法
  4. 如何下载关于人类或者其它物种的全部转录本名称(NM_)
  5. Ubuntu 删除虚拟网卡/网桥的命令
  6. 096_《Delphi5高级编程丛书之二:GUI编程》
  7. autojs开发的QQ复读机(学习版),源代码免费分享了
  8. win7 没有信息服务器地址,win7电脑提示无法解析服务器dns地址,该如何解决?
  9. 计算机cpu的相关知识,电脑CPU的相关知识
  10. Qt在Linux下如何查找可用字体