重定向printf到串口

重定向printf到串口(用的是STM32CUBEIDE)

参考链接
STM32 HAL库学习(三)ADC采样以及printf的使用
[STM32CubeIDE 二] printf重定向設置
STM32CubeIDE实现printf重定向输出到串口

1.重写int __io_putchar(int ch)(或int fputc(int ch, FILE *f))函数

  1. 在main.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
{
//串口号自己根据需要改
 HAL_UART_Transmit(&huart1, (uint8_t*)&ch,1,HAL_MAX_DELAY);
    return ch;
}
/* USER CODE END 0 */

参考链接

2.设置环境,使能输出float类型

  1. 方法一

在这里插入图片描述
2.方法二
在这里插入图片描述
这是输出代码

  uint8_t sf=123;
  float jh=54.36;
  while (1)
  {
    /* USER CODE END WHILE */
	  //printf("%u\r\n",sf);
	  printf("%f\n",jh);
	  HAL_Delay(100);
    /* USER CODE BEGIN 3 */
  }

刚开始的时候printf("%f",jh)没有加\n 换行,这家伙就不是实时输出,要凑够1024个字节才会一起发送(怀疑\n 换行是发送指令,要是没有换行,就只能等缓存溢出才发送)
在这里插入图片描述
坑就是:while循环要100ms才产生5字节,要21秒才能够1024,才能在串口看到数据,我都怀疑重定向代码出问题了😂。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值