重定向printf到串口(用的是STM32CUBEIDE)
参考链接
STM32 HAL库学习(三)ADC采样以及printf的使用
[STM32CubeIDE 二] printf重定向設置
STM32CubeIDE实现printf重定向输出到串口
1.重写int __io_putchar(int ch)(或int fputc(int ch, FILE *f))函数
- 在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类型
- 方法一
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,才能在串口看到数据,我都怀疑重定向代码出问题了😂。