stm32串口printf
时间: 2025-01-01 08:32:39 浏览: 48
### STM32 使用串口实现 `printf` 调试打印
#### 配置串口并重定向 `printf`
为了使 `printf` 函数能够通过串口发送数据,在 STM32 上需完成两部分工作:一是初始化 UART 外设;二是修改标准 I/O 流指向,让其输出至指定的 UART 接口。
对于外设初始化,推荐借助 CubeMX 工具自动生成基础框架代码[^1]。这一步骤简化了寄存器设置过程,确保硬件资源得到合理分配的同时减少了手动编码错误的可能性。
接着要处理的是将 C 库里的 `_write()` 函数替换为适合当前项目的版本,从而改变默认的标准输出行为。具体做法是在项目里加入一段用于接管此功能的新定义:
```c
#include "stm32l4xx_hal.h"
int __io_putchar(int ch) {
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); // 假定 huart1 是已配置好的句柄名
return ch;
}
```
上述片段展示了如何利用 HAL 库提供的 API 来传输单个字符到 UART 设备,并返回该字符作为确认标志[^2]。注意这里假设使用 USART1 进行通讯,实际应用时应根据具体情况调整参数。
当完成了这些准备工作之后,在应用程序逻辑内调用 `printf()` 就会触发经由串行端口的数据流了。例如可以在主循环中放置如下语句来进行简单的验证测试:
```c
while (1){
printf("Hello, world!\r\n");
HAL_Delay(1000);
}
```
这段程序每隔一秒就会向连接于 TX 引脚上的终端设备发送问候消息字符串[^4]。
阅读全文
相关推荐

















