STM32 printf重定向(串口輸出)
一、前言
什么是重定向?重定向是指將fputc里面的輸出指向目標(biāo)設(shè)備。
因printf函數(shù)調(diào)用了fputc,而fputc輸出有默認(rèn)指向的目標(biāo),
且不同庫中的fputc輸出指向不同,所以需要重寫fputc
二、標(biāo)準(zhǔn)庫與HAL庫實(shí)現(xiàn)重定向到串口
若需要printf輸出到串口,則需要將fputc里面的輸出指向串口,這一過程稱為重定向。
1.標(biāo)準(zhǔn)庫(重定向到USARTx,代碼中為USART1)
int fputc(int ch,FILE *p)
{
USART_SendDate(USART1,(u8)ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
return ch;
}
2.HAL庫 (重定向到huartx,代碼中為huart1)
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
NOTES:
1.調(diào)用printf需先導(dǎo)入stdio.h頭文件
2.需勾選Target中的use MicroLIB
————————————————
原文鏈接:https://blog.csdn.net/xuhuang11/article/details/119580130
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。