STM32 printf重定向(串口输出)

一、前言

什么是重定向?重定向是指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

生成海报
点赞 0

认真的旭仔

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

STM32 printf重定向(串口输出)

一、前言 什么是重定向?重定向是指将fputc里面的输出指向目标设备。因printf函数调用了fputc,而fputc输出有默认指向的目标,且不同库中的fputc输出指向不同,所以需要重写fputc

常兴串口调试助手

1,支持常用的300-9600波特率,能设置端口参数; 2,能以ASCII码或十六进制收发数据,真正支持中文字符的收发; 3,接收到的16进制数据选中后能以10进制和2进制显示。方便查看数

I2C总线的SDA和SCL

串行数据线SDA——负责在设备间传输串行数据  串行时钟线SCL——负责产生同步时钟脉冲 SCL\SDA是I2C总线的信号线。 I2C总线是共享的总线系统,因此可以将多个I2C设备连接到该系统上。连接到I2C中总线上的设备既可以