一、前言
什么是重定向?重定向是指将fputc里面的输出指向目标设备。因printf函数调用了fputc,而fputc输出有默认指向的目标,且不同库中的fputc输出指向不同,所以需要重写fputc
二、标准库与HAL库实现重定向到串口
若需要printf输出到串口,则需要将fputc里面的输出指向串口,这一过程称为重定向。
1.标准库(重定向到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.调用printf需先导入stdio.h头文件
2.需勾选Target中的use MicroLIB
▲文中不正之处,请不吝赐教
版权声明:本文为CSDN博主「认真的旭仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuhuang11/article/details/119580130
一、前言
什么是重定向?重定向是指将fputc里面的输出指向目标设备。因printf函数调用了fputc,而fputc输出有默认指向的目标,且不同库中的fputc输出指向不同,所以需要重写fputc
二、标准库与HAL库实现重定向到串口
若需要printf输出到串口,则需要将fputc里面的输出指向串口,这一过程称为重定向。
1.标准库(重定向到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.调用printf需先导入stdio.h头文件
2.需勾选Target中的use MicroLIB
▲文中不正之处,请不吝赐教
版权声明:本文为CSDN博主「认真的旭仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuhuang11/article/details/119580130
暂无评论