(1)問題描述: 多串口共用printf函數,百度到的資料大部分是建議重新寫一個xx_printf(format, …)。但是使用起來還是不方便,就此問題而言加上一個判斷語句便可解決。
(2)解決方法: printf函數最后調用的是int fputc(int ch, FILE *f),那么重新改寫此函數便可。
(3)代碼:
//標志量定義
int USART_PRINTF_FLAG = 2;//默認串口2
//改寫
fputcint fputc(int ch, FILE *f)
{
if (USART_PRINTF_FLAG == 2)
{
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
USART_SendData(USART2,(uint8_t)ch);
}
else
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
USART_SendData(USART1,(uint8_t)ch);
}
return ch;
}
//中斷處理
void USART1_IRQHandler(void)
{
USART_PRINTF_FLAG = 1;
//your coding here.。.
}
void USART2_IRQHandler(void)
{
USART_PRINTF_FLAG = 2;
//your coding here.。.
}

-
STM32
+關注
關注
2309文章
11162瀏覽量
373415 -
串口
+關注
關注
15文章
1619瀏覽量
82811
原文標題:STM32多串口共用printf打印串口數據
文章出處:【微信號:gh_dae0718828df,微信公眾號:gh_dae0718828df】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
stm32串口通信用printf發送數據配置
基于STM32的printf串口數據輸出
STM32中使用printf打印串口數據的實現原理及方法
STM32使用串口重定向系統printf函數輸出時出現一初始化或使用printf函數系統卡死的原因及解決辦法
STM32單片機基礎09——重定向printf函數到串口輸出的多種方法
stm32單片機串口使用printf及u3_printf
stm32printf函數的串口輸出代碼
STM32中串行通訊中printf函數的使用
stm32使用printf實現串口打印原理
STM32:如何寫出多串口共用printf函數語句?
評論