STM32下多个串口的Printf用法
网上讲的添加printf()到程序中一般都是这样的(简要提一下):
1.配置GPIO,USART,RCC的Configuration
2.勾选usbmicrolib
3.在程序中添加:(头文件需要添加#include
#ifdef__GNUC__
#definePUTCHAR_PROTOTYPEint__io_putchar(intch)
#else
#definePUTCHAR_PROTOTYPEintfputc(intch,FILE*f)
#endif
PUTCHAR_PROTOTYPE
{
USART_SendData(USART1,(u8)ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
returnch;
}
很明显这个方法使用printf()只能输出到usart1,如果需要使用多个usart呢,肯定不能都是用printf()。
方法如下是继续是用usart2的printf()功能:
1.配置usart2的串口配置,gpio,rccenable,跟上面类似
2.勾选usbmicrolib,跟上面类似
3.添加头文件#include
voidUSART2_printf(char*fmt,...)
{
charbuffer[CMD_BUFFER_LEN+1];//CMD_BUFFER_LEN长度自己定义吧
u8i=0;
va_listarg_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用 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)