stm32中实现printf打印
起因
最近在调试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打印相关推荐
- STM32高级开发(12)-在GCC中使用printf打印串口数据
在大家使用keil或是iar开发stm32等arm芯片的时候,想来最不陌生的就是使用print通过串口输出一些数据,用来调试或是其他作用.但是要明确的是由于keil iar gcc 他们使用的标准C语 ...
- C语言中使用printf()打印漂亮的颜色字体
1. 打印炫彩字体 : "\033[字背景颜色;字体颜色m字符串\033[0m" 格式如:printf("\033[1;33m Hello World. \033[0m ...
- 关于STM32中使用printf通过串口发送数据
printf 是源文件 stdio.h 中的函数(同c语言) 使用 printf 必须先引用源文件:#include "stdio.h" printf 内部会调用 fputc 函数 ...
- C语言之#define,#ifdef,typedef,extern,statis,__weak的用法,看懂stm32中的.h和.c文件
1. #define c语言中的预处理命令,用于宏定义. 示例: #define number 0xff(不用加分号) 这里就是用number代替了0xff. 2. #ifdef 条件编译,满足条件时 ...
- QT 使用printf() 打印结果
printf()打印 尝试在QT中使用printf打印结果,但是每次都是要关闭程序后,才能在控制台显示,虽然结果都显示了出来,但是不是我们要的时机出现. 原来是因为打印结果在缓冲区未被释放,所以无法显 ...
- STM32中printf重定向到串口
学习STM32过程中,经常打交道的莫过于串口,你可以将任何信息,当然重要的是调试信息打印到串口中输出,总是用一个字节发送函数或者字符串发送函数 总是有些不放便,之前编程中熟悉的莫过于printf了,下 ...
- keil 中调用printf 的使用 在软件调试下 serial windows 下显示打印信息
致我的青春和一起在路上奔跑的兄弟.愿我们能在路上感到温暖和力量.... 在程序调试中,不断的打印出变量和一些中间值是相当重要的,在单片机和arm的调试程序中printf 也相当的有用: 目录 1.软件 ...
- STM32中关于串口通信的printf()函数重定向问题
在STM32串口通信程序中使用printf()函数发送数据非常方便,但是需要先进行简单的配置,下面介绍两种配置方法. 方法一.对工程属性进行配置 第1步:在main.c中包含"stdio.h ...
- C语言中控制printf的打印颜色实例及vt100的控制符
C语言中控制printf的打印颜色实例及vt100的控制符文档 收藏 转自:http://blog.csdn.net/evimacsl/archive/2010/01/18/5206836.aspx ...
最新文章
- 温州大学《机器学习》课程课件(九、支持向量机)
- 【Hibernate】Hibernate实体关系映射实例解析
- Mining Precision Interface From Query Logs -- 学习笔记(二)
- 自学前端的误区和痛点解决办法
- git学习相关的博客地址
- Segment Descriptors, Code- and Data-Segment Descriptor Types
- 《季羡林先生》读书笔记-3
- 把1,2,3…n*n 的数字按照顺时针螺旋的形式填入数字矩阵
- H3C交换机配置VLAN
- 怎么删除手机html,两种方法教你如何删除手机模拟大师
- selenium爬取维基百科信息
- python爬取b站_python3 爬取B站视频弹幕
- java求抽象类shape_java 抽象类 Shape
- canvas绘制出货单
- 如何将vob格式转换成mp4
- Python - 装机系列2 Ubuntu(云)
- 图标照旧的效果_这不是而且不能成为“一切照旧”
- IT桔子 - 千里马俱乐部
- python虚拟环境中安装diango_安装Python虚拟环境和django
- KM算法matlab实现
热门文章
- 计算机的高级操作,计算机高级操作员考试大纲是什么
- Android 安装最新版的Android Studio软件(最新版3.6)
- 面试题:基于Python的青蛙跳台阶两种解法
- 如何下载关于人类或者其它物种的全部转录本名称(NM_)
- Ubuntu 删除虚拟网卡/网桥的命令
- 096_《Delphi5高级编程丛书之二:GUI编程》
- autojs开发的QQ复读机(学习版),源代码免费分享了
- win7 没有信息服务器地址,win7电脑提示无法解析服务器dns地址,该如何解决?
- 计算机cpu的相关知识,电脑CPU的相关知识
- Qt在Linux下如何查找可用字体