header
×
单片机 > 单片机程序设计 > 详情

STM32下多个串口的Printf用法

发布时间:2020-05-19 发布时间:
|
STM32下多个串口的Printf用法

网上讲的添加printf()到程序中一般都是这样的(简要提一下):
1.配置GPIO ,USART,RCC 的Configuration
2.勾选usb micro lib
3.在程序中添加:(头文件需要添加#include )
#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 ,编写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          {
                USART_SendData(USART2, (u8) buffer[i++]);
                while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); 
        }
        va_end(arg_ptr);
}


关键字:STM32  多个串口  Printf用法 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于S3C6410的ARM11学习(七) 核心初始化之关闭MMU和CACHE
footer