新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32下多個(gè)串口的Printf用法

STM32下多個(gè)串口的Printf用法

作者: 時(shí)間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
STM32多個(gè)串口Printf用法

網(wǎng)上講的添加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;
}
很明顯這個(gè)方法使用printf()只能輸出到usart1,如果需要使用多個(gè)usart呢,肯定不能都是用printf()。

方法如下是繼續(xù)是用usart2的printf()功能:
1.配置usart2的串口配置,gpio,rccenable,跟上面類似
2.勾選usbmicrolib,跟上面類似
3.添加頭文件#include,編寫USART2的printf函數(shù):
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);
}

本文引用地址:http://m.butianyuan.cn/article/201611/318198.htm



關(guān)鍵詞: STM32多個(gè)串口Printf用

評(píng)論


技術(shù)專區(qū)

關(guān)閉