专栏中心

EEPW首页 > 专栏 > STM32下多个串口的Printf用法

STM32下多个串口的Printf用法

发布人:我就是我lxw 时间:2012-08-29 来源:工程师 发布文章
网上讲的添加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()函数自以此类推!

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

仿人型机器人能同时流利地说15种语言

DK3200A—uPSD3200设计与应用

线控技术重构汽车电子架构,电感式位置传感器成就标杆应用

Gartner:到2030年,80%企业软件和应用将为多模态,2024年尚不足10%

智能计算 2025-07-08

电子科技大学--嵌入式系统应用开发技术29

EW8051 V7.20D集成开发环境(免费4K版本)

电子科技大学--嵌入式系统应用开发技术32

EBDSAM7S64开发板全套资料

HBM,爆炸式增长

网络与存储 2025-07-08

电子科技大学--嵌入式系统应用开发技术31

俄罗斯据称正在测试由英伟达 Jetson Orin 驱动的致命下一代人工智能无人机

为探索者赋能,RIGOL发布多通道波形发生及先进计算解决方案

DSP芯片的原理与开发应用(第2版)

瑞萨获得法国嵌入式 FPGA 技术许可

据报道英伟达计划在以色列建设价值数十亿美元的园区,将成为该国最大的园区

电子科技大学--嵌入式系统应用开发技术33

电子科技大学--嵌入式系统应用开发技术30

百亿估值:宇树科技计划在2025年底前递交IPO申请,腾讯阿里押注

DSock TCP_IP程序类库

资源下载 2007-03-23

mr-library中的GPIO是怎么封装的?完整拆解+实战思路

嵌入式系统 2025-07-08
更多 培训课堂
更多 焦点
更多 视频

技术专区