STM32多串列埠共用printf列印串列埠資料
阿新 • • 發佈:2018-12-31
(1)問題描述:
多串列埠共用printf函式,百度到的資料大部分是建議重新寫一個xx_printf(format, …)。但是使用起來還是不方便,就此問題而言加上一個判斷語句便可解決。
(2)解決方法:
printf函式最後呼叫的是int fputc(int ch, FILE *f),那麼重新改寫此函式便可。
(3)程式碼:
//標誌量定義
int USART_PRINTF_FLAG = 2;//預設串列埠2
//改寫fputc
int 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...
}