完善资料让更多小伙伴认识你,还能领取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`足够大以容纳输出的字符串。根据您的实际需求调整缓冲区的大小。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
736 浏览 0 评论
935 浏览 0 评论
为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么都没有
2276 浏览 0 评论
1901 浏览 2 评论
《DNK210使用指南 -CanMV版 V1.0》第九章 打印输出实验
701 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11407 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-6 18:01 , Processed in 0.510129 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号