logo
carrot

太阳当空照,花儿对我笑

stm32 printf重定向

9/2/2023, 6:32:38 PM
  1. 首页
  2. /
  3. 正文
  1. 重写putchar
    usart.c->/* USER CODE BEGIN 0 */

    #include <stdio.h>
    
    #ifdef __GNUC__
    #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
    #else
    #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
    #endif
    PUTCHAR_PROTOTYPE {
    	//具体哪个串口可以更改USART1为其它串口
    	while ((USART1->SR & 0X40) == 0) ; //循环发送,直到发送完毕
    	USART1->DR = (uint8_t) ch;
    	return ch;
    }
    
    
  2. 更改标准输出流设置

    usart.c->/* USER CODE BEGIN USART1_Init 0 */

    // Disable buffering for stdout
    setvbuf(stdout, NULL, _IONBF, 0);
    

注:

在 stdio.h 头文件中,标准输出流 stdout 使用缓冲区(buffered)输出,这就是为什么在默认情况下会自动添加 \r\n。要更改这一设置,您可以使用 setvbuf 函数将标准输出流设置为无缓冲(unbuffered)模式。

热门文章
标签云
© 2021 Copyright 本站由 upyun 提供储存服务