STM32使用printf重定向到USART

配置你想要重映射的串口,这里用串口1举例子,你完全可以定义成其他串口。

波特率和位数格式完全按照需要定义,这里不要开启dma和中断。

这里建议使用单独生成.c和.h,当然你不生成也完全可以。

cpp 复制代码
/* USER CODE BEGIN 0 */
int __io_putchar(int ch)
{
    /* Implementation of __io_putchar */
	/* e.g. write a character to the UART1 and Loop until the end of transmission */
    HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFFFFFF);

    return ch;
}
int __io_getchar(void)
{
  /* Implementation of __io_getchar */
    char rxChar;

    // This loops in case of HAL timeout, but if an ok or error occurs, we continue
    while (HAL_UART_Receive(&huart1, (uint8_t *)&rxChar, 1, 0xFFFFFFFF) == HAL_TIMEOUT);

    return rxChar;
}
/* USER CODE END 0 */

然后将上面代码放到main.c中。其中huart1就是你想要把那个串口映射,根据需要修改。

在需要使用printf的地方先添加头文件"stdio.h",然后就可以正常使用printf了。

同样,你也可以使用putchar('=');函数了,最好的是可以使用getchar()获取串口输入了。

如果你需要打印浮点数,可以配置这里,让浮点数正常显示。Project->Prorerties

相关推荐
本道自然7 分钟前
stm32wb55rg (2) 阅读资料手册
stm32·单片机·嵌入式硬件
平凡灵感码头1 小时前
STM32 RTC配置
stm32·单片机·实时音视频
第六个葫芦娃3 小时前
【ESP32】st7735s + LVGL移植
单片机
阿川!3 小时前
嵌入式软件--stm32 DAY 2
stm32·单片机·嵌入式硬件
BW.SU6 小时前
单片机 + 图像处理芯片 + TFT彩屏 触摸滑动条控件
单片机·嵌入式硬件·51单片机·ra8889·ra6809·图形处理芯片·stc8h8k64u
程序员JerrySUN13 小时前
驱动开发硬核特训 · Day 22(下篇): # 深入理解 Power-domain 框架:概念、功能与完整代码剖析
linux·开发语言·驱动开发·嵌入式硬件
尤老师FPGA15 小时前
LVDS系列9:Xilinx 7系可编程输入延迟(二)
单片机·嵌入式硬件·fpga开发
雾削木18 小时前
mAh 与 Wh:电量单位的深度解析
开发语言·c++·单片机·嵌入式硬件·算法·电脑
AiFlutter19 小时前
低代码平台开发手机USB-HID调试助手
单片机·游戏·计算机外设
Mirelladis20 小时前
实验:串口通信
单片机·51单片机