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

相关推荐
激昂网络10 分钟前
用CT001解读Type-C线材设计:为什么只有一个CC灯亮?
c语言·开发语言·嵌入式硬件
逐步前行39 分钟前
HAL_NVIC
stm32·单片机·嵌入式硬件
养一回月亮!1 小时前
STM32F407VET6驱动1.8寸TFT LCD移植LVGL,实现矩阵按键控制UI
stm32·单片机·lvgl
恒森宇电子有限公司1 小时前
芯晞微CSM4056H 单节锂离子电池充电器芯片 封装ESOP-8
单片机·嵌入式硬件
果果燕1 小时前
ARM嵌入式学习(五)---IMX6ULL外部中断
单片机·嵌入式硬件
无人机9011 小时前
Delphi网络编程实战:UDP通信与多线程网络优化详解
单片机·嵌入式硬件
笨笨饿1 小时前
博客目录框架
c语言·开发语言·arm开发·git·嵌入式硬件·神经网络·编辑器
KOYUELEC光与电子努力加油2 小时前
BROADCOM博通集成 Matter 1.5平台认证就绪、BK7239N等芯片助力智能家居无缝融合
服务器·科技·单片机·智能家居
Lugas Luo2 小时前
SATA Port Multiplier (SATA 集线器) 原理与驱动架构深度剖析
linux·嵌入式硬件
zmj3203243 小时前
芯片的ISP在系统编程-模式
单片机·嵌入式开发