1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
C语言中printf是个功能强大的函数,可以打印各种格式的数据。在单片机程序调试时,也经常需要将数据打印出来查看。今天将介绍通过串口和USB虚拟串口的方式使用printf函数打印。
通过串口使用printf,需要将串口发送函数重定向到printf。在编译好的工程中添加以下部分程序即可: #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ int fputc(int ch,FILE *f) { HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF); return ch; } 另外,不要忘了包含头文件 #include "stdio.h" USB虚拟串口使用printf和串口不同,需要自己重新写一个功能和printf函数一样的函数。在编译好的USB虚拟串口的工程中,u***d_cdc_if.c文件下添加如下程序,并在.h文件中进行声明。 #include void u***_printf(constchar *format, ...) { va_list args; uint32_t length; va_start(args, format); length = vsnprintf((char *)UserTxBufferFS, APP_TX_DATA_SIZE, (char *)format, args); va_end(args); CDC_Transmit_FS(UserTxBufferFS, length); } 在需要时直接调用该函数即可,使用方法和printf函数一样: u***_printf("%dsrn",cnt); |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9055 浏览 16 评论
4086 浏览 18 评论
1175浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 00:57 , Processed in 1.125281 second(s), Total 77, Slave 58 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号