网上讲的添加printf()到程序中一般都是这样的(简要提一下):
1.配置GPIO ,USART,RCC 的Configuration
2.勾选usb micro lib
3.在程序中添加:(头文件需要添加#include <stdio.h>)
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
USART_SendData(USART1, (u8) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
很明显这个方法使用printf()只能输出到usart1,如果需要使用多个usart呢,肯定不能都是用printf()。
方法如下是继续是用usart2的printf()功能:
1.配置usart2的串口配置,gpio,rcc enable,跟上面类似
2.勾选usb micro lib,跟上面类似
3.添加头文件#include <stdarg.h>,编写USART2的printf函数:
void USART2_printf (char *fmt, ...)
{
char buffer[CMD_BUFFER_LEN+1]; // CMD_BUFFER_LEN长度自己定义吧
u8 i = 0;
va_list arg_ptr;
va_start(arg_ptr, fmt);
vsnprintf(buffer, CMD_BUFFER_LEN+1, fmt, arg_ptr);
while ((i < CMD_BUFFER_LEN) && buffer[i])
{
USART_SendData(USART2, (u8) buffer[i++]);
while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
}
va_end(arg_ptr);
}
用法与printf类似,如int i=123;USART2_printf("%d",i);
如果需要使用USART3,USART4......的printf()函数自以此类推!
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
机械硬盘的未来在哪里?
极越原地解散,产品上有哪些值得吸取的教训和经验?
Virtex-5 FPGA ML501评估平台电路图(17)
英伟达AR眼镜专利曝光:无背光全息技术 更清晰自然
Tornado ProtoTyper下载文件I2.0
hello
Virtex-5 FPGA ML501评估平台电路图(19)
请教 samsung4510 telnetd
Virtex-5 FPGA ML501评估平台电路图(16)
半导体ODM巨头们,有了新方向
Virtex-5 FPGA ML501评估平台电路图(18)
Tornado ProtoTyper运行使用文档2.0
高速数据采集平台解说3
Tornado ProtoTyper下载文件H2.0
阿里入局AI眼镜,与雷鸟创新达成深度战略合作
苹果公司CEO乔布斯在斯坦福大学的演讲中文字幕
Intersil介绍:同轴电缆的安全链接
Tornado ProtoTyper下载文件J2.0
Tornado Release(PDF)
从苹果 A7 到 A18 Pro 芯片:晶体管数量激增 19 倍,晶圆成本飙升 2.6 倍
Virtex-5 FPGA ML501评估平台电路图(20)
洗牌在即,哪些车企才能活下去?
谁能开发手机中文发射系统
原来为硅MOSFET设计的DC-DC控制器能否用来驱动GaNFET?
DC-DC电源设计要点
消息称三星电子已启动4nm制程HBM4逻辑芯片试产
高速数据采集平台解说4
帮一下吧!
Intersil ISL55210全差分放大器
完整的电话接口模块、电话信号音识别模块、语音编程器