完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在 UART 工作中遇到了一个问题。
MCU-TC397 所以我正在使用 TERA TERM 打印日志。 我使用的是标准代码,如下所示: void print_f(常量字符 *p_frm,...) { va_list p_arg; va_start (p_arg、p_frm);vsprintf(uboutputBu f、p_frm、p_arg);va_end (p_arg);buf_to_screen (uboutputBuf);} 我能够打印字符和常量值,如下所示, print_f ("nn RESULT_STARTn);" 但是当我使用诸如此类的东西时 test_print++; print_f ("nn RESULT_START 值 = %dn,test_print);" 然后每次在 Tera Term 中我得到 RESULT_START 值 = 1 时,test_print 值都不会改变!! 我在这里遗漏了什么吗。 有人能帮忙了解根本原因吗? |
|
相关推荐
1个回答
|
|
要在UART上打印变量数据,您需要将变量的值格式化为字符串,然后将其传递给UART输出函数。在您的代码中,您可以使用`sprintf`函数将变量的值转换为字符串,并将结果存储在一个缓冲区中。然后,您可以将缓冲区的内容传递给UART输出函数。
例如,您可以修改您的代码如下: ```c void print_f(const char *p_frm, ...) { va_list p_arg; va_start(p_arg, p_frm); char uboutputBuf[50]; // 适当选择缓冲区大小 vsprintf(uboutputBuf, p_frm, p_arg); va_end(p_arg); buf_to_screen(uboutputBuf); } ``` 然后,您可以使用类似于以下方式打印变量值: ``` int test_print = 0; print_f("RESULT_START 值 = %d,test_print", test_print); ``` 这将将`test_print`的值转换为字符串,并将其与"RESULT_START 值 ="和其他字符串一起打印。 请确保缓冲区`uboutputBuf`足够大以容纳输出的字符串。根据您的实际需求调整缓冲区的大小。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11786 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 13:12 , Processed in 0.610437 second(s), Total 41, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号